、あなたは本質的なPerlのsplit関数を使用して別の行に分割することができます:@linesは、あなたの行の配列である
my @lines = split("\n", $info);
を。 "\ n"は改行の正規表現です。あなたはそれぞれの行をループし、次のことができますよう:あなたはその後、空白の各ラインを分割することができます
foreach (@lines) {
$line = $_;
# do something with $line....
}
(\ sが1つの空白文字で正規表現\ sの+、および意味+ 1回以上):
@fields = split("\s+", $line);
、あなたは、その配列のインデックスを経由して直接各フィールドにアクセスすることができます:$フィールド[0]、$フィールド[1]など
か、あなたが行うことができます:
($var1, $var2, $var3, $var4) = split("\s+", $line);
これは、各行のフィールドを別々の名前付き変数に置きます。今
- あなたは3列目の文字でソートあなたのラインにしたい場合、あなたはこれを行うことができます:
my @lines = split("\n", $info);
my @arr =(); # declare new array
foreach (@lines) {
my @fields = split("\s+", $_);
push(@arr, \@fields) # add @fields REFERENCE to @arr
}
今、あなたは「配列の配列」を持っているし。これは以下のように簡単に並べ替えることができる。
@sorted = sort { $a->[2] <=> $b->[2] } @arr;
@fieldsの第3の要素(インデックス2)によって@arrソートれます。
編集2これを行う、自分の変数に同じ3番目の列を持つ行を置くために:
my %hash =(); # declare new hash
foreach $line (@arr) { # loop through lines
my @fields = @$line; # deference the field array
my $el = $fields[2]; # get our key - the character in the third column
my $val = "";
if (exists $hash { $el }) { # check if key already in hash
my $val = $hash{ $el }; # get the current value for key
$val = $val . "\n" . $line; # append new line to hash value
} else {
$val = $line;
}
$hash{ $el } = $val; # put the new value (back) into the hash
}
今、あなたは、各キービーイングのための値で、3列目の文字とキーハッシュを持っていますそのキーを含む行その後、ハッシュをループして出力したり、ハッシュ値を使用したりすることができます。
これらのデータ/行はどこにありますか?あなたの内部ツールはそれらを1つの変数に入れますか?または、このテキストデータを読み込む必要のあるファイルですか? –
ツールは、それらを単一の変数に置きます。 – scraft3613
Perl初心者がいます!!! 1 – nes1983