gpt4 book ai didi

perl - chomp 是如何改变非引用传递的变量的值的?

转载 作者:行者123 更新时间:2023-12-04 16:43:15 24 4
gpt4 key购买 nike

chomp似乎能够更改未通过引用传递的变量的值;也就是说,语法是 chomp $var而不是 chomp \$var .

这怎么可能?如何在函数中模仿这种行为?
chomp :

my $var="foo\n";
chomp $var;
print $var
mychomp :

my $var="foo\n";
mychomp(\$var);
print $var;

sub mychomp {
my $ref=shift;
$$ref=~s/\s+$//;
}

最佳答案

所有 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/;
}

输出
ABC

请注意,使用数据文字调用此函数,例如
upper_case('def')

会产生 fatal error

Modification of a read-only value attempted

关于perl - chomp 是如何改变非引用传递的变量的值的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31492653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com