【问题标题】:Perl how to modify parameterPerl如何修改参数
【发布时间】:2014-02-18 12:22:05
【问题描述】:

SOCKET recv 函数如何直接修改标量 $PDU 的值? 通常这种语法是按值传递而不是按引用传递,至少到目前为止我是这样认为的。

my $PDU; 
my $addr = $socket->recv($PDU, MAXBYTES);

我想将此效果用于我自己的目的,所以 最好是一个方便的测试子程序,描述如何实现这一点。

喜欢:

my $PDU="orig";
sub test {
  my $par1=shift;
  $par1="test";
}
print "$PDU\n";

如您所知,这将导致“原始”而不是“测试”。

提前谢谢你。

亲切的问候, 赫尔曼

【问题讨论】:

    标签: perl parameter-passing subroutine


    【解决方案1】:

    当你的函数有这样的行为时,应该有很好的记录,

    my $PDU="orig";
    sub test {
      $_[0] = "test";
    }
    
    test($PDU);
    print "$PDU\n";
    

    sub test {
      my ($par1) = map \$_, @_;
    
      $$par1 = "test";
    }
    

    输出

    test
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      • 2016-03-07
      • 1970-01-01
      • 2015-05-05
      • 1970-01-01
      • 2011-04-23
      • 2013-08-10
      相关资源
      最近更新 更多