"Ole Kofoed Hansen" <ole@xxxxxxxxxxxxxxx> wrote in message
news:3F45E10D.8090506@xxxxxxxxxxxxxxx...
Følgende ikke-testede perl-stump burde kunne hjælpe dig på vej. Det skal
have outputtet ligesom dit eksempel på STDIN og på STDOUT skriver den
de relevante sektionsnumre - på hver sin linie.
#!/usr/bin/perl -w
$normalspace = $/;
$afsnitspace = "";
$/ = $afsnitspace;
@sektioner = grep { /content-type: message\/rfc822/ } <STDIN>;
$/ = $normalspace;
foreach $sektion (@sektioner) {
if ($sektion =~ /^section: (.*)$/ ) { print "$1\n"; }
}
Tak for dit input - jeg får ikke noget output fra koden. Indsætter jeg
print
"$sektion"; i foreach løkken får jeg godt nok de 2 blokke ud, som er af
message/rfc822 typen - men sektions-nummeret får jeg ikke....
Måske det vil virke, hvis du erstatter linien med:
$sektion =~ /section:\s([^\s])\s/; $nr=$1; print "$nr\n";
istedet for den if-konstuktion, som jeg egentlig heller ikke var glad
for. Ellers er der nok nogen på listen, som er mere perl-haj end jeg.
Hvis det heller ikke virker, kan du eventuelt skrive hele
$sektion-blokkene og sende dem igennem en grep eller sed.
Ok, perl-scriptet giver mig nu output som:
1.1
1.2
Nu mangler jeg så bare lige at få forklaret hvordan jeg får mit sh script
til at læse de 2 linier fra stdin - og kalde/køre en batch-fil med nummeret
som parameter... f.eks
for (et eller andet)...
do
/var/qmail/bin/myscript.sh $section
done
?
/Brian