Basierend auf einem Forums-Beitrag vom 25.11.1998 von:
Cosmo, wolfgang.ba.buechler@bmw.de
Die einfachste Möglichkeit, die Größe einer Datei zu ermitteln, ist der -s-Operator. Dieser Operator testet, ob eine Datei eine Länge ungleich null hat. Dabei liefert er die tatsächliche Länge zurück.
$bytes = (-s "pfad/datei.ext"); |
Basierend auf einem Forums-Beitrag vom 13.11.1998 von:
Frank Schönmann, fs@tower.de
Viele Programmiersprachen unterstützen das Anhängen von Daten ans Ende einer Datei, keine das Hinzufügen von Daten in der Mitte oder am Anfang. Um in Perl neue Daten an den Anfang einer Datei zu schreiben, dann erst den alten Dateiinhalt, müssen Sie diesen komplett einlesen und die Datei ganz neu schreiben.
open(DATEI, "<$datei.txt"); @zeilen = <DATEI>; close(DATEI); open(DATEI, ">$datei.txt"); print DATEI $neue_zeile; print DATEI @zeilen; close(DATEI); |
Bei längeren Dateien ist es - aufgrund von eventuellem Speicherbedarf - besser, erst eine temporäre Datei mit dem alten Dateiinhalt anzulegen und dann die neue Datei zu schreiben, statt alles in eine Liste einzulesen.
Basierend auf einem Forums-Beitrag vom 22.01.1999 von:
Jörk Behrends, jbehrends@abstrakt.de
Viele nützliche Informationen über Dateien lassen sich in Perl mit der Funktion stat abfragen. Diese liefert eine Liste zurück, die aus 13 Elementen besteht und (fast) alle erdenklichen Informationen über eine Datei enthält.
($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat $filename; |
Die zurückgegebene Liste enthält in dieser Reihenfolge folgende Informationen: Gerätenummer des Dateisystems, Inode-Nummer, Dateimodus (Typ und Rechte), Anzahl der (harten) Links auf diese Datei, numerische Benutzer-ID des Datei-Eigners, numerische Gruppen-ID des Datei-Eigners, Geräte-Identifier (nur bei Gerätedateien), Gesamtgröße der Datei in Bytes, Zeit des letzten Zugriffs, Zeit der letzten Änderung, Zeit der Inode-Modifikation (NICHT die Zeit der Schaffung!), vom Dateisystem bevorzugte Blockgröße, aktuelle Anzahl verwendeter Blöcke.
Basierend auf einem Forums-Beitrag vom 20.01.1999 von:
Cheatah, Hajo@hadiko.de
Die Existenz einer Datei lässt sich am einfachsten mit dem passenden Dateitestoperator -e überprüfen.
if (-e "$dateiname") { print "Datei $dateiname existiert."; } |
Basierend auf einem Forums-Beitrag vom 04.01.1999 von:
Ralf Neumann, cityshop@webset.de
Um (Binär-)Dateien als Attachments in eMails zu versenden, müssen diese vorher in ein geeignetes (Text-)Format gebracht werden. Dies geschieht über ein Programm, das die Datei MIME-encodieren kann. Danach kann die Nachricht inklusive der codierten Binärdatei - richtig zusammengesetzt - via eMail versandt werden. Folgendes Perl-Skript kann diese Aufgabe übernehmen, setzt aber ein geeignetes Tool zur MIME-Encodierung voraus.
#!/usr/bin/perl $mimeprog = '/usr/bin/mimencode'; $mailprog = '/usr/lib/sendmail'; $recipient = 'cityshop@webset.de'; $attachedFile = 'image.jpg'; $attachedName = 'image.jpg'; $boundary = "----=_NextPart"; # // Datei-Encodierung @attachedFile = `$mimeprog $attachedFile $attachedName`; # // Mailversand &mailIt; sub mailIt { open (MAIL, "|$mailprog $recipient") || die "Fehler beim Öffnen: $mailprog!\n"; print MAIL "Subject: Sendfile-Test\n"; print MAIL "Content-Type: multipart/mixed;\n"; print MAIL " boundary=\"$boundary\"\n\n"; print MAIL "--$boundary\n"; print MAIL "Content-Type: text/plain\n"; print MAIL " charset=\"iso-8859-1\"\n"; print MAIL "Content-Transfer-Encoding: 7bit\n\n"; print MAIL "Anlagen: $attachedName\n\n"; print MAIL "--$boundary\n"; print MAIL "Content-Type: image/jpeg\n"; print MAIL " name=\"$attachedName\"\n"; print MAIL "Content-Transfer-Encoding: base64\n"; print MAIL "Content-Disposition: attachment;\n"; print MAIL " filename=\"$attachedName\"\n\n"; print MAIL @attachedFile; print MAIL "\n\n"; close MAIL; } |
weiter: | Perl: Sonstiges |
zurück: | Perl: reguläre Ausdrücke |
SELFHTML Forums-Auslese CGI und Perl |
© 2000 das Redaktionsteam