[Thread Prev][Thread Next]   >Date Index >Thread Index

Re: Perl regex + Send::Mailer

Christian Winter - Sat Nov 03 12:03:44 2007


Stefan Bauer schrieb:
Hallo Liste,

ich verwende Send::Mailer zum Versand von E-Mails. Hierzu sammle ich die
Empfänger in einer Textdatei auf, füge den localpart zur E-Mail Adresse
hinzu, trenne die Empfänger mit Komma und übergebe diesen String an
Send::Mailer als Empfänger. Problem hierbei ist, dass mein String am Ende
ein weiteres Komma beinhaltet, welches ich nicht benötige.

Wie meistere ich das am einfachsten?

Hier meine Zeilen:

open ADMINS, "$admins";
my @admins = <ADMINS>;
foreach (@admins) {
chomp;
s#\w+#$&\@localhost, #s;
my $adminadressen .= $_;
}

Jetzt enthällt my $adminadressen benutzer1@localhost, benutzer2@localhost,
benutzer3@localhost,

das abschließende Komma würde ich gern entfernen. Leidere scheitere ich an
dem passenden regulären Ausdruck.

Die Regex ist ziemlich teuer und ineffizient für das was Du
da machst (ganz abgesehen davon, dass das "my $adminadressen"
innerhalb des foreach-loops so nicht viel Sinn macht, aber ich
vermute mal, dass das ein Relikt des Kürzens ist). Ich würde
es so lösen:

open( ADMINS, "<", $admins ) or die $!;
my @admins = <ADMINS>;

chomp @admins;

foreach( @admins ) {
   # Falls abschließende Leerzeichen da sein können:
   # s/\s+$//;
   $_ .= '@localhost';
}
my $adminadressen = join ', ', @admins;

-Christian


Next: