chomp
似乎能够改变未通过引用传递的变量的值; 也就是说,语法chomp $var
代替chomp \$var
.
这怎么可能?我怎样才能在函数中模仿这种行为?
chomp
:
my $var="foo\n";
chomp $var;
print $var
Run Code Online (Sandbox Code Playgroud)
mychomp
:
my $var="foo\n";
mychomp(\$var);
print $var;
sub mychomp {
my $ref=shift;
$$ref=~s/\s+$//;
}
Run Code Online (Sandbox Code Playgroud)
Bor*_*din 14
所有Perl参数都是"通过引用传递"; 更准确地说,内容@_
是实际参数的别名
守
use strict;
use warnings;
use 5.010;
my $s = 'abc';
upper_case($s);
say $s;
sub upper_case {
$_[0] =~ tr/a-z/A-Z/;
}
Run Code Online (Sandbox Code Playgroud)
ABC
Run Code Online (Sandbox Code Playgroud)
请注意,使用数据文字调用此函数,例如
upper_case('def')
Run Code Online (Sandbox Code Playgroud)
会产生致命错误
Modification of a read-only value attempted
Run Code Online (Sandbox Code Playgroud)