Bio: MegaThreads

Beitrag lesen

Sup!

Mein Skript...

#!/local/bin/perl5

Funktioniert nur beim Start im Verzeichnis, das durchsucht werden soll

Darum als Pfad einfach "."

Verzeichnis oeffnen und einlesen

opendir THEDIR,".";
@dir = readdir THEDIR;
closedir THEDIR;

Initialisierung von Lowtop (kleinster der groessten 15 Werte)

$lowtop = 0;

Initialisierung eines Arrays mit Referenzen auf: Arrays mit 2 Elementen, die Referenzen enthalten auf: Eine Zeichenkette Eine Zahl.

#    Array (15 Elemente)   [    R    ]     ...     [   R   ][   R   ]
#    Referenz auf              
#    Array (2 Elemente)         [   R      R  ]
#    Referenzen auf                       
#    Count/Dateiname              Count   Dateiname

In dieser Datenstruktur werden dann die Threads mit den jeweils hoechsten Posings mitsamt Dateiname gespeichert.

for ($i = 0; $i< 15;$i++)
  {
    ${  ${  $topfifteen[$i]  }[1]  } = 0;
  }

Fuer alle Elemente im Verzeichnis...

foreach $element (@dir)
  {
    if ($element eq "." $element eq ".." !($element =~ /htm$/))
      {

Die nicht gerade keine HTML Datei oder . oder .. sind...

}
    else
      {

Oeffne die Datei...

open THEFILE,$element;  

Setze counter auf 0...

$count =0;  
while ($line = <THEFILE>)  

Arbeite alle Zeilen ab

{
     if ($line =~ /<!--end:/) {$count += 1;}

Zaehle dabei Zeilen, in denen eine Posting-End-Signatur vorkommt

}
if ($count > $lowtop)

Wenn die Zaehlung mehr Postings ergibt als der Thread mit den wenigsten Postings in den Top 15

{

Dann ueberschreibe die 15te Position in den Top15 mit dem neuen Top15 Thread..

${  ${  $topfifteen[14]  } [1]  } = $count;
            ${  ${  $topfifteen[14]  } [0]  } = $element;

Und sortiere die Top15, damit an der 15ten Position wieder der Thread mit den wenigsten Posting steht

Die Sort Funktion heisst nur so freaky - warum auch nicht...

@newfifteen = sort freaky @topfifteen;

Swappen...

@topfifteen = @newfifteen;

Neues Lowtop setzen

$lowtop = ${${$topfifteen[14]}[1]};
   }

Datei zumachen

close THEFILE;  

}

Ende der Schleife ueber das Directory

}

Ergebnisausgabe - fuer alle Top15 Threads Postingzahl und Dateinamen raushauen

foreach $element (@topfifteen)
  {
    printf "${  ${  $element  } [1]  } - ";
    printf "${  ${  $element  } [0]  }\n";
  }

Vergleichs-Sub fuer das Sortieren der etwas komplizierten Struktur

sub freaky
  {
    ${${$a}[1]} < ${${$b}[1]};
  }

Gruesse,

<img src="http://outpost.purespace.de/webdesign.jpg" alt="">

Bio