map(encode_entities, @_) 似乎不起作用
map(encode_entities, @_) does not seem to work
map(encode_entities, @_)
好像不行,这里的函数来自HTML::Entities
。我可以解决它(见下文),但有没有更丑陋的方法?谁能解释一下这是怎么回事——我的想法有概念上的错误吗?
use HTML::Entities;
sub foo {
my @list = map(encode_entities, @_);
return @list;
}
sub bar {
my @list = @_;
my $n = scalar @list;
for my $k (0..$n-1) {
$list[$k] = encode_entities($list[$k]);
}
return @list;
}
my @test = ('1 < 2', 'Hello world!');
print join("\n", bar(@test)); # prints the two lines, encoded as expected
print join("\n", foo(@test)); # undefined, gives "Use of uninitialized value..." error
没有理由假设除 Perl 运算符之外的任何其他东西都会使用 $_
作为默认参数:必须仔细编写才能以这种方式运行
您需要做的就是使用特定参数
调用encode_entities
试试这个
sub baz {
map encode_entities($_), @_;
}
您可能会觉得没有必要单独定义子程序
map(encode_entities, @_)
好像不行,这里的函数来自HTML::Entities
。我可以解决它(见下文),但有没有更丑陋的方法?谁能解释一下这是怎么回事——我的想法有概念上的错误吗?
use HTML::Entities;
sub foo {
my @list = map(encode_entities, @_);
return @list;
}
sub bar {
my @list = @_;
my $n = scalar @list;
for my $k (0..$n-1) {
$list[$k] = encode_entities($list[$k]);
}
return @list;
}
my @test = ('1 < 2', 'Hello world!');
print join("\n", bar(@test)); # prints the two lines, encoded as expected
print join("\n", foo(@test)); # undefined, gives "Use of uninitialized value..." error
没有理由假设除 Perl 运算符之外的任何其他东西都会使用 $_
作为默认参数:必须仔细编写才能以这种方式运行
您需要做的就是使用特定参数
调用encode_entities
试试这个
sub baz {
map encode_entities($_), @_;
}
您可能会觉得没有必要单独定义子程序