[[perl]]
 

Perl

Dateioperationen

allgemein

#!/usr/bin/perl
open(NEUIGKEITENDATEI, "<news.txt");    # Datei zum lesen öffnen
close(NEUIGKEITENDATEI);
open(NEUIGKEITENDATEI, ">news.txt");    # Datei zum schreiben öffnen
close(NEUIGKEITENDATEI);
open(NEUIGKEITENDATEI, ">>news.txt");    # Datei zum anhängenden schreiben öffnen
close(NEUIGKEITENDATEI);
open(NEUIGKEITENDATEI, "+>news.txt");    # Datei zum lesen und schreiben öffnen
close(NEUIGKEITENDATEI);
if(open(COUNTERDATEI, "<counter/counter.dat") == false)
 { print "Counter-Datei nicht gefunden\n"; }
open(COUNTERDATEI, "<counter/counter.dat") || die "Counter-Datei nicht gefunden\n";

Datei zeilenweise einlesen

#!/usr/bin/perl
@Zeilen = ("");
open(MAILDAT, "<inbox.dat") || die "Datei mit E-Mails nicht gefunden\n";
while(<MAILDAT>)
{
    push(@Zeilen,$_);
}
close(MAILDAT);
for(@Zeilen)
{
    if(/HTML/)
    {
        print $_;
    }
}

Datei zeichenweise einlesen

#!/usr/bin/perl
@Vokale = ("a","e","i","o","u");
@Anzahl = (0,0,0,0,0);
open(DATEI, "<$ARGV[0]") || die "$_[1] nicht gefunden\n";
while(($AktuellesZeichen = getc(DATEI)) ne "")
{
    for($i=0;$i<=4;++$i)
    {
        if($AktuellesZeichen eq $Vokale[$i])
        {
            $Anzahl[$i]++;
        }
    }
}
close(DATEI);
for($i=0;$i<=4;++$i)
{
    print "$Vokale[$i] kommt in $ARGV[0] isg. $Anzahl[$i] mal vor\n";
} 

in Datei schreiben

#!/usr/bin/perl
$uebergabe = $ARGV[0];
open(DATEI, ">/tmp/test.txt");
print DATEI "Test 0001\n";
print DATEI split(/\n/, $uebergabe),"\n";
close(DATEI);
#!/usr/bin/perl
# Dieses Beispiel liest eine kommabegrenzte Datei mit Adressen ein
# und schreibt sie HTML-formatiert in eine neue Datei
@Adressen = ("");    # Speicher für alle Datensaetze
@Datensatz = ("");   # Speicher für alle Felder des aktuellen Datensatzes
$Felder = "";        # Speicher für die Namen der Felder (stehen in der ersten Dateizeile
$i = 0;
open(ADRESSEN, "<adressen.csv") || die "Adressendatei nicht gefunden\n";
while(<ADRESSEN>)              # Kommabegrenzte Datei einlesen
{
if($i == 0)                  # erste Zeile der Datei einlesen
 {
  $Felder = $_;              # Feldnamen ermitteln
 }
else
 {
  $Adressen[$i] = $_;        # ab zweiter Zeile in @Adressen einlesen
 }
$i++;                        # Datensatzzähler erhöhen
}
close(ADRESSEN);
$Anzahl = $i - 1;              # Anzahl Datensätze merken
chop($Felder);
@Datenfelder = split(/,/,$Felder);    # Erste Zeile mit Feldnamen aufdröseln
open(ADRESSENDAT, ">adressen.htm");   # HTML-Datei zum Schreiben öffnen
print ADRESSENDAT "<html>\n<head>\n";  # HTML-Datei schreiben
print ADRESSENDAT "<title>Adressen</title>\n";
print ADRESSENDAT "</head>\n<body bgcolor=#FFFFFF>\n";
for(@Adressen)                        # solange Daten in der Adressenliste sind
{
@Datensatz = split(/,/,$_);         # Aktuellen Datensatz aufdröseln
$i = 0;
for(@Datensatz)
  {
  print ADRESSENDAT "<b>$Datenfelder[$i]:</b> $Datensatz[$i]<br>\n";   # Aktuellen Datensatz schreiben
  $i++;
  }
}
print ADRESSENDAT "</body>\n</html>\n";
close(ADRESSENDAT);
print $Anzahl," Datensaetze geschrieben\n";   # Nur zur Kontrolle: auf Standardausgabe

Beispielschnipsel

STDIN

simpel

while(<STDIN>) {
        print $_;
}

stdin2syslogd

#!/usr/bin/perl -w
use Sys::Syslog;
use IO::Handle;
$ident="@ARGV";                 # Prozessname: "logger -t"
$logopt="pid,cons";             # pid,ndelay,cons,nowait
$facility="local7.notice";      # Facility: "logger -p"
openlog $ident, $logopt, $facility;
$io = new IO::Handle;
if ($io->fdopen(fileno(STDIN),"r")) {
        $daten = $io->getline;
        $io->close;
        $counter++;
        syslog ($facility, "%d: $daten", $counter);
}
closelog;

Beispielaufruf:

# echo "Das ist ein Test: test0002" | /usr/local/bin/logger.pl Test_Tag
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki