Perl移位操作简单的问题

Mar*_* A. 5 perl shift

以下两行perl的目的是什么?

my $host = shift || 'localhost';
my $port = shift || 200;
Run Code Online (Sandbox Code Playgroud)

那应该返回localhost和端口10.什么是shift关键字?

Dav*_*idO 9

第一行转移从任一@_@ARGV(取决于你在代码中上),或在不存在任何内容@_/ @ARGV,分配localhost$host.

第二个现在应该是不言自明的.

有关详细信息,请查看班次文档.

  • Pop脱颖而出.从底部移开 (2认同)

TLP*_*TLP 6

这段代码是一种为$host和提供默认值的方法$port.它通常位于脚本或子例程的开头,@ARGV@_分别从中获取值.

那应该返回localhost和端口10.

不,||运算符是短路的OR,这意味着如果LHS操作数返回真值,则忽略RHS操作数.基本上,它意味着这个(并且只有这个):"如果是真的则选择左侧值,否则选择右侧值."

shift ARRAY将返回第一个值ARRAY,或:

如果省略了ARRAY,则将@_数组移动到子程序和格式的词法范围内,将@ARGV数组移到子程序之外,并且也移动到由eval STRING,BEGIN {},INIT {},CHECK {}建立的词法范围内. ,UNITCHECK {}和END {}构造.

引自http://perldoc.perl.org/functions/shift.html

当然,还会shift从移位的数组中删除值.因此,您可以shift像这样连续使用两个,以便进行非常方便的参数处理.