使用字段分隔符变量升级您的列表打印

在Perl中打印数组每个元素的典型方法是使用foreach循环

my @sportscar_brands = qw/Ferrari Aston_Martin Lambourgini/;
foreach my $brand (@sportscar_brands){
    print "$brand\n";
}
# Ferrari
# Aston_Martin
# Lambourgini

另一种方法是设置输出字段分隔符变量($,)。当打印列表或数组时,Perl会在元素之间插入此变量。因此,如果您将输出字段分隔符设置为换行符(\n),您将实现与上一个示例相同的效果,而无需foreach循环。

$, = "\n"; # set the output field separator to newline
my @sportscar_brands = qw/Ferrari Aston_Martin Lambourgini/;
print @sportscar_brands;
# Ferrari
# Aston_Martin
# Lambourgini

输出字段分隔符也适用于列表

$, = "\n";
print qw/Ferrari Aston_Martin Lambourgini/;
# Ferrari
# Aston_Martin
# Lambourgini

还有一个名为列表分隔符的变量($“)。Perl在插值字符串中插入数组元素的值。这里的细微差别是,输出字段分隔符在打印时适用,而列表分隔符在插值字符串的上下文中适用于所有数组。例如

$" = "\n"; # set the list separator to newline
my @normalcar_brands = qw/Ford Honda Toyota Fiat/;
print @normalcar_brands; # not inside an interpolated string
# FordHondaToyotaFiat

print "@normalcar_brands" # works in interpolated string
# Ford
# Honda
# Toyota
# Fiat

my $separated_list_string = "@normalcar_brands"; # injects the separator
print $separated_list_string;
# Ford
# Honda
# Toyota
# Fiat

另一个额外的区别:尽管其名称如此,列表分隔符变量($“)在列表上不起作用,而输出字段分隔符($,)起作用(在Perl 5.16.3中)。

最后,如果您已设置$,和$”,并打印插值数组,$”将被插入,而$,将被忽略。


本文最初发布在PerlTricks.com上。

标签

David Farrell

David是一位专业程序员,他经常推文博客关于代码和编程艺术。

浏览他们的文章

反馈

这篇文章有什么问题吗?请帮助我们通过在GitHub上打开问题或拉取请求。