スタックエクスチェンジへようこそ。
追加の変数は必要ありません:
use strict;
use warnings;
my $line = ' 324446 psharma jobA 2 0 435529 0 0 0 435531 ';
# Remove leading and trailing white space
$line =~ s/^ \s+ | \s+ $//x;
# Split by consecutive white space and keep certain fields:
my ($col1, $col2, $col3, $col10) = (split m/\s+/, $line)[0, 1, 2, 9];
print "1: $col1 2: $col2 3: $col3 10: $col10\n";
出力:
1: 324446 2: psharma 3: jobA 10: 435531
.を使用しても、追加の変数は本当に必要ありませんsplit
。たとえば、これらのフィールドのみを別の関数に渡したい場合、分割線は次のようになります。
some_func((split m/\s+/, $line)[0, 1, 2, 9]);
列番号のカウントは0ではなく1から始まると想定していることに注意してください(つまり、「列1」は「324446」などの数字です)。それが、私の例でも変数に名前を付けた方法です。