/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Hjælp til Perl forståelse... (kender C, me~
Fra : Brian Ipsen


Dato : 27-05-01 01:11

Hej!

Fra et Perl script (til analyse af multipost-completition på NNTP)
har jeg følgende data:

while (<FILE>) {
# This ugly thing will pull out the subject in $1, the
# part number of this message in $2 and the number of
# parts in this beast in $3. The pattern match will get
#
# subject to extract followed by a (num/num)
# or
# subject to extract followed by a [num/num]
#
if(/(.+) [\(\[]([0-9]+)\/([0-9]+)[\)\]]$/ ) {

# Ignore the "index" parts since they don't contribute
# to the multi-part completion.
next if $2 eq "00" || $2 eq "0";

if( defined ($subj{"$1"}) ) {
($tot_parts,$cnt_parts,$part_no) = split /\t/,
$subj{"$1"};
} else {
($tot_parts,$cnt_parts) = 0;
$part_no = "";
}

if ($tot_parts == 0) {
$tot_parts = $3;
} elsif ($tot_parts != $3) {
#print STDERR "Problems with $1, Total parts should be
$tot_parts not $3\n";
}

$cnt_parts++;
$part_no = $part_no." ".$2;
$subj{"$1"} = $tot_parts."\t".$cnt_parts."\t".$part_no;
}

Mit spørgmål går på hvad det egentlig laver... If statement'en leder
vel efter strenge/linier indeholdende (tal1/tal2) eller [tal1/tal2] -
tal1 vil ligge i $2 og tal2 i $3 - hvis $2 er 00 eller 0 hoppes til
næste linie.

Resten er rimeligt utydeligt for mig (noget for komplekst), men hvis
en eller anden kan forklare (i mere logisk eller C-termer) hvad der
foregår, så har jeg lidt større mulighed for at forstå, hvad der rent
fatisk sker i koden....

/Brian

 
 
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408917
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste