Supponendo che il testo viene messo in un unico $ info variable, allora si può dividere in righe separate utilizzando la funzione di perl scissione intrinseca:
my @lines = split("\n", $info);
dove @linee è un array delle linee. "\ N" è la regex per una nuova riga. È possibile scorrere ogni riga come segue:
foreach (@lines) {
$line = $_;
# do something with $line....
}
È quindi possibile dividere ogni riga su spazi bianchi (regex \ s +, dove il \ s è un carattere di spazio bianco, e il + significa 1 o più volte):
@fields = split("\s+", $line);
e si può quindi accedere a ogni campo direttamente tramite il suo indice di matrice: $ campo [0], $ campo [1] ecc
o, si può fare:
($var1, $var2, $var3, $var4) = split("\s+", $line);
che metterà i campi in ogni riga in variabili con nome separate.
ora - se si vuole sorta le linee dal carattere nella terza colonna, si potrebbe fare questo:
my @lines = split("\n", $info);
my @arr =(); # declare new array
foreach (@lines) {
my @fields = split("\s+", $_);
push(@arr, \@fields) # add @fields REFERENCE to @arr
}
Ora avete un "array di array". Questo può essere facilmente risolto come segue:
@sorted = sort { $a->[2] <=> $b->[2] } @arr;
che ordinare @arr dal terzo elemento (indice 2) del @Campi.
Edit 2 Per mettere le linee con la stessa terza colonna nelle proprie variabili, fare questo:
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
}
ora avete un hash digitato con la terza personaggi delle colonne, con il valore di ogni essere chiave le linee che contengono quella chiave. È quindi possibile scorrere l'hash e stampare o utilizzare in altro modo i valori hash.
dove sono questi dati/linee? Il tuo strumento interno le mette in una singola variabile? O sono questi dati di testo in un file che devi leggere? –
Lo strumento li mette in una singola variabile. – scraft3613
Ci sono novizi Perl !!! 1 – nes1983