在Perl中的一个语句中拆分并分配

Laz*_*zer 2 perl

@temp = split(/\./, $_);
$val = $temp[1];
$val =~ s/\D//;
Run Code Online (Sandbox Code Playgroud)

在Perl中编写单个语句而不是这三个语句的正确语法是什么?

($val = split(/\./, $_)[1]) =~ s/\D//;
Run Code Online (Sandbox Code Playgroud)

给我

test.pl第126行的语法错误,靠近")["

test.pl的执行因编译错误而中止.

Phi*_*ter 14

这是如何做:

$_="ab123.ab456cd.78";
($val = (split(/\./))[1])=~ s/\D//g;
print $val;
Run Code Online (Sandbox Code Playgroud)

(我冒昧地使用隐含$_split,并将/g标记添加到,s///因为从前面删除一个非数字没有多大意义.)

现在你知道了,不要这样做.它不清楚,它不会显示你的内涵,而且很可怕.更清楚的是:

$val = (split /\./)[1];
$val =~ s/\D//g;
Run Code Online (Sandbox Code Playgroud)

代码不仅仅是为计算机编写的.它是为人们阅读而编写的,以便以后可以修改它.如果你没有为下一个人(可能在2个月内成为)编写好的代码,下一个人将有一个可怕的时间搞清楚你做了什么.


yst*_*sth 9

列表切片看起来像(LIST)[LIST]; 你省略了这个()部分.

($val = (split(/\./, $_))[1]) =~ s/\D//;
Run Code Online (Sandbox Code Playgroud)