perl - 我可以使用数组的大小而不必将它放在变量中吗

标签 perl

目前我这样做是为了读取数组的各个内容

my $size = @words;
for(my $x = 0; $x < $size, $x++)
{
   print $words[$x]; 
}

是否可以跳过 $size 赋值?一种转换数组并减少一行的方法?

for(my $x = 0; $x < $(@word), $x++)
{
   print $words[$x]; 
}

似乎找不到正确的语法。

谢谢

最佳答案

替换

for (my $i = 0; $i < $(@words), $i++) { ... $words[$i] ... }

for (my $i = 0; $i < @words; $i++) { ... $words[$i] ... }

就像在您的作业中一样,在标量上下文中评估的数组会产生其大小。


也就是说,使用 C 风格的循环既复杂又浪费资源。

如果您需要索引,更好的解决方案:

for my $i (0..$#words) { ... $words[$i] ... }

如果不需要索引,更好的解决方案:

for my $word (@words) { ... $word ... }

关于perl - 我可以使用数组的大小而不必将它放在变量中吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54334849/

相关文章:

Javascript:/e Javascript 中 RegExp 的修饰符

Perl:读取字符串中双引号之间的内容

regex - 使用 perl 将 XML 转换为 JSON

perl - Mojolicious 应用程序使用谷歌身份验证,插件 OAuth2

perl - 用 Perl 编写宏

perl - 如何使用 Curses 从调整大小的窗口中获取窗口大小?

linux - 在 Unix 中使用正则表达式连接两个文件(最好使用 perl)

perl - 在此Perl代码中 '@('在做什么?

perl - 在 FastCGI 中 fork() 的正确方法是什么?

perl - 如何在 Perl 中用 ASCII 替换 Unicode 字符?