Perl 调用子例程以生成不起作用的随机字符串



生成随机字符串的脚本:

sub rand_Strings {
   my @chars = ("A".."Z", "a".."z", "0".."9");
   my $string;
   $string .= $chars[rand @chars] for 1..8;
}
my $strings = &rand_Strings;
print $strings;

但是,当它不在子例程中时,它可以工作。如果$string是全局变量,也可以工作。我错过了什么?谢谢

您需要

在子例程中显式添加 return 语句。在子例程中自动返回最后一条语句在循环构造中不起作用,在您的示例中,循环构造是for循环。for循环的后缀版本等效于带有大括号的常规版本。

来自perldoc perlsub:

如果未找到"return",并且最后一个语句是表达式,则其 返回值。如果最后一条语句是循环控制结构,例如 如果为"foreach"或"while",则返回值未指定。空子 返回空列表。

相关内容

  • 没有找到相关文章

最新更新