Repost from Perlmonks für einen Mitarbeiter:Wie kann ich Perls Split-Befehl mit Weißraum-Trimmen kombinieren?
Ich schrieb ein Perl-Skript, um lange Listen von E-Mails durch einen Semikolon getrennt zu trennen. Was ich mit dem Code machen möchte, ist die Kombination der Aufteilung mit dem Beschneiden von Leerraum, so dass ich nicht zwei Arrays benötige. Gibt es Weg zu trimmen, während das erste Array geladen wird. Ausgabe ist eine sortierte Liste von Namen. Danke.
#!/pw/prod/svr4/bin/perl
use warnings;
use strict;
my $file_data =
'Builder, Bob ;Stein, Franklin MSW; Boop, Elizabeth PHD Cc: Bear,
+ Izzy';
my @email_list;
$file_data =~ s/CC:/;/ig;
$file_data =~ s/PHD//ig;
$file_data =~ s/MSW//ig;
my @tmp_data = split(/;/, $file_data);
foreach my $entry (@tmp_data) {
$entry =~ s/^[ \t]+|[ \t]+$//g;
push(@email_list, $entry);
}
foreach my $name (sort(@email_list)) {
print "$name \n";
}
Haben Sie versucht: split/\ s *; \ s * /, $ file_data –
Ich denke, Sie könnten auch unpack() verwenden, aber ich kann es jetzt nicht versuchen, und ich grok nicht entpacken() genug um Ihnen ohne sie eine Lösung anzubieten. – Makis