是否可以在一行中编写Perl foreach循环?

时间:2011-08-16 15:30:12

标签: perl foreach

是否可以在Perl中使用单行foreach循环?

$hash{$thing}++ foreach my $thing (@things);

我知道这可以通过许多其他命令来实现,例如,

die "Invalid file!\n" if (open($Handle, "file.txt"));

我知道公开声明可能会被破坏:)

2 个答案:

答案 0 :(得分:30)

几乎。在foreach后缀中,您必须使用$ _:

$hash{$_}++ foreach @things;

或等效(因为forforeach是语法别名):

$hash{$_}++ for @things;

答案 1 :(得分:3)

你可以这样做:

foreach my $thing (@things) {$hash{$thing}++};

如果你想在一行中使用词法范围的变量。您无法反转foreach并保留循环范围的变量。