easyVDR

Normale Version: Wer kann bei Perl-Script helfen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen

Ich betreibe einen Hylafaxserver, der völlig problemlos arbeitet.

Ab und an (bei bestimmten Kunden) möchte ich kontrollieren, ob das abgesendete Fax auch ankam - dazu nutze ich hylafax_mod für Webmin (dann kann das auch meine Frau)

Die Seite wird korrekt angezeigt, aber ich hätte gerne anstelle der Auftragsnummer das Versanddatum angezeigt.

Der Abschnitt wird wohl in send_done.pl in Zeile 59 erzeugt.

Nur woher kommt $item? Aus hylafax-lib.pl? Und wie?

Ich würde eben im Array $item den ersten Wert von der Auftragsnummer ins Versanddatum ändern. Das Versanddatum könnte man aus docq/doc in Zeile 60 holen, denn in dem Verzeichnis sind alle docxxx.ps-Dateien gespeichert.

Nur wie? Wenn weitere Dateien oder Infos benötigt werden, liefere ich die gerne.

Danke für die Hilfe, denn Perl kann ich nicht...

Andy
Hallo sinai,

wenn ich das richtig sehe, passiert folgendes:

@lines=faxqueue($QPAR);
-> ruft faxstat -ld auf und liest die von faxstat -ld gelieferten Zeilen ins @lines Array ein
...
    foreach $line (@lines)
        {
        $line =~ /^(\d+) /;
        $faxorder{$1}=$line;
        }
-> baut aus den Zeilen ein assoziatives Array mit der Job-ID als Key
...
# sorting faxes by num
    if ($q->param('ASC.x'))
        { @sortfax = sort {$a <=> $b} (keys %faxorder); }
    else
        { @sortfax = sort {$b <=> $a} (keys %faxorder); }
       
  foreach $faxnum (@sortfax)
        {
        @items=&queueItems($faxorder{$faxnum},@sizes);
-> erzeugt einen Sortierschlüssel für das Array (Job-ID auf- oder absteigend), liest das Array dann in der Sortierfolge aus, bereitet die Felder der jeweiligen faxstat -ld Zeile als @items Array auf

Leider enthält die faxstat -ld Ausgabe das Versanddatum nicht. Dein Vorschlag, es aus dem modification date der Queue-Datei zu ermitteln, sollte funktionieren. Vielleicht so:

1) Vor der foreach $item (@items) Schleife merkst Du Dir den Wert von $items[0] (also die Job-ID). Zum Beispiel:

$id = $items[0];

2) Jetzt ersetzt Du nach der foreach $item (@items) Schleife alle Vorkommnisse von $items[0] durch $id.

3) Nach Deiner neuen $id = $items[0]; Zeile (vor der foreach $item (@items) Schleife) setzt Du $items[0] auf das modification date der Queue-Datei:

if (-e "docq/doc".$id.".ps") {
  $items[0] = strftime "%d.%m.%Y %H:%M", localtime((stat "docq/doc".$id.".ps")[9]);
}

Das ist ein normaler strftime Format-String, den Du nach Belieben anpassen kannst.
Mit if(-e ...) wird getestet, ob die Queue-Datei existiert. Sollte immer der Fall sein, aber falls nicht, wird verhindert, dass das Skript aufgrund eines stat() Fehlers abbricht, stattdesen wird wie vorher die Job-ID ausgegeben.

4) vermutlich brauchst Du jetzt noch am Anfang der Datei (nach den require Zeilen) ein

use POSIX;


Ungetestet  Tongue - sollte so oder ähnlich funktionieren  Smile

Viel Glück!
Bin neugierig: Hat's geklappt?
Werde grade mit Arbeit zugesch...

Kam noch nicht zum testen.

Sent from my HTC Hero using Tapatalk