使用虚拟占位符进行Perl赋值

Dr.*_*son 25 perl split

在其他语言中,我使用过Erlang和Python,如果我分割字符串并且不关心其中一个字段,我可以使用下划线占位符.我在Perl中试过这个:

   (_,$id) = split('=',$fields[1]);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

无法修改./generate_datasets.pl第17行中列表赋值中的常量项,靠近");"
由于编译错误,./generate_datasets.pl的执行被中止.

Perl是否有类似的模式,我可以使用而不是创建一个无用的临时变量?

gee*_*aur 40

undef 在Perl中服务于同样的目的.

(undef, $something, $otherthing) = split(' ', $str);
Run Code Online (Sandbox Code Playgroud)

  • 注意:甚至在声明`my(undef,$ a,$ b)= ...`中有效 (9认同)
  • 我想对此进行投票,但使用`$ a`和`$ b`会阻止我. (4认同)
  • @darch:*eyeroll* (4认同)

too*_*lic 17

如果使用切片,则甚至不需要占位符:

use warnings;
use strict;

my ($id) = (split /=/, 'foo=id123')[1];
print "$id\n";

__END__

id123
Run Code Online (Sandbox Code Playgroud)


ike*_*ami 8

你可以分配给(undef).

(undef, my $id) = split(/=/, $fields[1]);
Run Code Online (Sandbox Code Playgroud)

你甚至可以使用my (undef).

my (undef, $id) = split(/=/, $fields[1]);
Run Code Online (Sandbox Code Playgroud)

您还可以使用列表切片.

my $id = ( split(/=/, $fields[1]) )[1];
Run Code Online (Sandbox Code Playgroud)