SELFHTML

Forums-Auslese
Perl: Datei-Handling

Diese Seite ist ein Dokument mit Informationstext

nach unten Wie lässt sich die Größe einer Datei ermitteln?
nach unten Wie erweitert man eine Datei am Anfang?
nach unten Neuer Beitrag in der Forums-Auslese Informationen über Dateien
nach unten Neuer Beitrag in der Forums-Auslese Wie testet man die Existenz einer Datei?
nach unten Neuer Beitrag in der Forums-Auslese Wie verschickt man eMails mit Attachments?

nach unten 

Wie lässt sich die Größe einer Datei ermitteln?

Basierend auf einem Forums-Beitrag vom 25.11.1998 von:
E-Mail 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.

Beispiel:

$bytes = (-s "pfad/datei.ext");

nach obennach unten 

Wie erweitert man eine Datei am Anfang?

Basierend auf einem Forums-Beitrag vom 13.11.1998 von:
E-Mail 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.

Beispiel:

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.

nach obennach unten 

Informationen über Dateien

Basierend auf einem Forums-Beitrag vom 22.01.1999 von:
E-Mail 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.

Anwendung:

($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat $filename;

Erläuterung:

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.

nach obennach unten 

Wie testet man die Existenz einer Datei?

Basierend auf einem Forums-Beitrag vom 20.01.1999 von:
E-Mail Cheatah, Hajo@hadiko.de

Die Existenz einer Datei lässt sich am einfachsten mit dem passenden Dateitestoperator -e überprüfen.

Beispiel:

if (-e "$dateiname")
{
  print "Datei $dateiname existiert.";
}

nach obennach unten 

Wie verschickt man eMails mit Attachments?

Basierend auf einem Forums-Beitrag vom 04.01.1999 von:
E-Mail 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;
}

nach oben
weiter:Weiter Seite Perl: Sonstiges
zurück:Zurück Seite Perl: reguläre Ausdrücke
 

© 2000 Seite das Redaktionsteam