繁体   English   中英

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

[英]perl call subroutine to generate random strings not working

生成随机字符串的脚本:

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”,则未指定返回值。 空子返回空列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM