我有一个非常凌乱的perl脚本(我不是Perl大师)就是这个:
perl -ane '($h,$m,$s) = split /:/, $F[0];
$pid = $F[1];
$args = $F[2]." ".$F[3]." ".$F[4]." ".$F[5]." ".$F[6]." ".$F[7]." ".$F[8]." ".$F[9]." ".$F[10]." ".$F[11]." ".$F[12]." ".$F[13];
if(($h == 1 && $m > 30) || ($h > 1)) {
print "$h :: $m $kb $pid\nArguments:\n$args\n\n "; kill 9, $pid }'
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法,而不是将所有这些连接用于$arg
表示类似的东西$arg=$F[2-end]
我很乐意帮助:)
谢谢!
$args = join " ", @F[2..$#F];
Run Code Online (Sandbox Code Playgroud)
$#arrayname
是最后一个元素的索引@arrayname
; @arrayname[$start..$end]
从中获取一个以子节点开头$arrayname[$start]
和结尾的子数组$arrayname[$end]
,并包含其间的所有元素.把它们放在一起,就可以得到@F[2..$#F]
" @F
从$F[2]
数组末尾开始的所有元素".
然后你用来join
将所有这些数组元素连接成一个字符串; 第一个参数告诉Perl在其余部分之间放置什么.