3

我对这段代码的结果感到困惑。

my @lines;
for (my $count = 0; $count < 3; $count++) {

    print "Give me input again ";
    chomp (my $line = <STDIN>);
    $lines[$count] = $line;
}

$" = "|";
print "@lines\n";

当我运行代码时,它是如何 $" = "|";工作的?结果是一|二|三。代码如何工作,以便将“|” 每个输入之间?

4

2 回答 2

8

这就是将数组插值到双引号字符串中的作用。

"$foo\n"

等同于

$foo . "\n"

"@lines\n"

等同于

join($", @lines) . "\n"

这记录在perldataperlvar中。

于 2012-09-03T03:03:07.443 回答
3

$"只是 perl 中的一个特殊变量名,它告诉解释器如何在双引号字符串上下文中分隔数组元素。默认值是空格,但上面的代码告诉 perl 改为使用|。因此,如果您省略了该行,One|Two|Three而不是默认值。One Two Three

有关详细信息,请参阅http://perldoc.perl.org/perlvar.html#General-Variables 。

于 2012-09-03T02:51:09.213 回答