folgend ist das Skript für regex passenden und mit dem Wert in dem Array zu speichern:Wie kann ich mehrere Regex-Übereinstimmungen mit Perl zu einem Array-Element zusammenführen?
sub b1 {
# print $_;
my @file = @_;
my @value;
my $find = qr/(\s+)([0-9]+)\s([A-Z])\s[0-1].[0-9]+\s->\s([A-Z])\s/;
foreach my $file(@file){
push (@value, $file=~ /$find/) ;
print "\n";
}
return @value;
}
my @array_b1 = b1(@body);
print "@array_b1 \n";
__DATA__
28 C 0.510 -> L 0.923
30 S 0.638 -> A 0.527
31 A 0.496 -> P 0.952
__OUTPUT__
28 C L 30 S A 31 A P
während Werte von regex Erfassung und ein Array, wird das Skript speichert Werte in aufeinanderfolgenden Elementen in der Matrix, dh der obigen Anordnung speichernde Elemente aufweist:
@array[1]=28
@array[2]=C
@array[3]=L
@array[4]=30.
Stattdessen möchte ich die von der Regex erfassten Werte in demselben Array-Element speichern. Das ist:
@array[1]=28CL
@array[2]=30SA
Was ist der beste Weg, das zu tun?
In Perl5, Array-Elemente $ verwenden, nicht @: $ array [1], $ array [2] usw. Es gibt einige Orte, die Sie @array sagen kann [1] statt, ohne sie zu brechen, aber nicht überall (weshalb @array [1] Ihnen eine Warnung gibt - Sie haben Warnungen eingeschaltet, ja?) – ysth
Haben Sie überlegt, ein Buch zu kaufen? http://books.perl.org/category/7 –
@sinan unur: Ich habe bereits ein Buch. Danke für den Vorschlag. Wissen Sie, warum die Regex Informationen abgleicht und erfasst und sie als aufeinander folgende Elemente platziert? – shubster