Giả sử rằng các văn bản được đưa vào một biến thông tin $ duy nhất, sau đó bạn có thể chia nó thành dòng riêng biệt bằng cách sử dụng chức năng perl chia nội tại:
my @lines = split("\n", $info);
nơi @lines là một mảng của đường dây của bạn. "\ N" là regex cho một dòng mới. Bạn có thể lặp qua mỗi dòng như sau:
foreach (@lines) {
$line = $_;
# do something with $line....
}
Sau đó bạn có thể chia nhỏ mỗi dòng trên khoảng trắng (regex \ s +, nơi \ s là một trong những nhân vật khoảng trắng, và + có nghĩa là 1 hoặc nhiều lần):
@fields = split("\s+", $line);
và sau đó bạn có thể truy cập vào từng lĩnh vực trực tiếp thông qua chỉ số mảng của nó: $ lĩnh vực [0], $ field [1], vv
hay, bạn có thể làm:
($var1, $var2, $var3, $var4) = split("\s+", $line);
sẽ đặt các trường trong mỗi dòng vào các biến được đặt tên riêng biệt.
Bây giờ - nếu bạn muốn loại dòng của bạn bằng cách nhân vật trong cột thứ ba, bạn có thể làm điều này:
my @lines = split("\n", $info);
my @arr =(); # declare new array
foreach (@lines) {
my @fields = split("\s+", $_);
push(@arr, \@fields) # add @fields REFERENCE to @arr
}
Bây giờ bạn có một "mảng của mảng". Điều này có thể dễ dàng được sắp xếp như sau:
@sorted = sort { $a->[2] <=> $b->[2] } @arr;
sẽ sắp xếp @arr theo phần tử thứ 3 (chỉ số 2) của @fields.
Sửa 2 Để đưa dòng với cột thứ ba cùng vào biến riêng của họ, làm như sau:
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
}
Bây giờ bạn có một băm keyed với các nhân vật cột thứ ba, với các giá trị cho mỗi con người chủ chốt các dòng có chứa khóa đó. Sau đó, bạn có thể lặp qua băm và in ra hoặc sử dụng các giá trị băm khác.
các dữ liệu/dòng này ở đâu? Công cụ nội bộ của bạn có đưa chúng vào một biến duy nhất không? Hoặc là dữ liệu văn bản này trong một tệp bạn cần đọc? –
Công cụ đặt chúng vào một biến duy nhất. – scraft3613
Có người mới Perl !!! 1 – nes1983