perl
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| perl [2016-04-08 09:51:07] – [Perl] manfred | perl [2017-11-01 13:03:49] (aktuell) – [lwp-request problem] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Perl ====== | ||
| + | |||
| + | __Auch selbst geschriebene Perl-Module müssen im Perl-Lib-Pfad abgelegt werden!__ | ||
| + | |||
| + | Die einkompilierten Perl-Lib-Pfade kann man so auslesen: | ||
| + | |||
| + | hier ein Beispiel von Ubuntu 14.04: | ||
| + | > perl -V | sed -ne '/ | ||
| + | @INC: | ||
| + | /etc/perl | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | . | ||
| + | |||
| + | Dabei bietet sich das letzte Verzeichnis, | ||
| + | |||
| + | ===== Dateioperationen ===== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ==== allgemein ==== | ||
| + | |||
| + | # | ||
| + | | ||
| + | open(NEUIGKEITENDATEI, | ||
| + | print NEUIGKEITENDATEI "hier steht der Text\n"; | ||
| + | close(NEUIGKEITENDATEI); | ||
| + | | ||
| + | open(NEUIGKEITENDATEI, | ||
| + | print NEUIGKEITENDATEI "hier steht der Text\n"; | ||
| + | close(NEUIGKEITENDATEI); | ||
| + | | ||
| + | open(NEUIGKEITENDATEI, | ||
| + | print NEUIGKEITENDATEI "hier steht der Text\n"; | ||
| + | close(NEUIGKEITENDATEI); | ||
| + | | ||
| + | open(NEUIGKEITENDATEI, | ||
| + | print NEUIGKEITENDATEI "hier steht der Text\n"; | ||
| + | close(NEUIGKEITENDATEI); | ||
| + | | ||
| + | if(open(COUNTERDATEI, | ||
| + | { print " | ||
| + | | ||
| + | open(COUNTERDATEI, | ||
| + | |||
| + | Datei löschen: | ||
| + | # | ||
| + | | ||
| + | use strict; | ||
| + | use CGI::Carp qw(fatalsToBrowser); | ||
| + | | ||
| + | my $result = unlink (" | ||
| + | $result = unlink (" | ||
| + | $result = unlink ("/ | ||
| + | |||
| + | Datei verschieben: | ||
| + | use File::Copy; | ||
| + | move( "/ | ||
| + | |||
| + | |||
| + | ==== Datei zeilenweise einlesen ==== | ||
| + | |||
| + | # | ||
| + | | ||
| + | @Zeilen = ("" | ||
| + | open(MAILDAT, | ||
| + | while(< | ||
| + | { | ||
| + | push(@Zeilen, | ||
| + | } | ||
| + | close(MAILDAT); | ||
| + | for(@Zeilen) | ||
| + | { | ||
| + | if(/HTML/) | ||
| + | { | ||
| + | print $_; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | ==== Datei zeichenweise einlesen ==== | ||
| + | |||
| + | # | ||
| + | | ||
| + | @Vokale = (" | ||
| + | @Anzahl = (0, | ||
| + | open(DATEI, "< | ||
| + | while(($AktuellesZeichen = getc(DATEI)) ne "" | ||
| + | { | ||
| + | for($i=0; | ||
| + | { | ||
| + | if($AktuellesZeichen eq $Vokale[$i]) | ||
| + | { | ||
| + | $Anzahl[$i]++; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | close(DATEI); | ||
| + | for($i=0; | ||
| + | { | ||
| + | print " | ||
| + | } | ||
| + | |||
| + | |||
| + | ==== in Datei schreiben ==== | ||
| + | |||
| + | # | ||
| + | | ||
| + | $uebergabe = $ARGV[0]; | ||
| + | | ||
| + | open(DATEI, ">", | ||
| + | print DATEI "Test 0001\n"; | ||
| + | print DATEI split(/\n/, $uebergabe)," | ||
| + | close(DATEI); | ||
| + | |||
| + | |||
| + | # | ||
| + | # Dieses Beispiel liest eine kommabegrenzte Datei mit Adressen ein | ||
| + | # und schreibt sie HTML-formatiert in eine neue Datei | ||
| + | | ||
| + | @Adressen = ("" | ||
| + | @Datensatz = ("" | ||
| + | $Felder = ""; | ||
| + | $i = 0; | ||
| + | open(ADRESSEN, | ||
| + | while(< | ||
| + | { | ||
| + | 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(/,/, | ||
| + | | ||
| + | open(ADRESSENDAT, | ||
| + | print ADRESSENDAT "< | ||
| + | print ADRESSENDAT "< | ||
| + | print ADRESSENDAT "</ | ||
| + | for(@Adressen) | ||
| + | { | ||
| + | @Datensatz = split(/,/, | ||
| + | $i = 0; | ||
| + | for(@Datensatz) | ||
| + | { | ||
| + | print ADRESSENDAT "< | ||
| + | $i++; | ||
| + | } | ||
| + | } | ||
| + | print ADRESSENDAT "</ | ||
| + | close(ADRESSENDAT); | ||
| + | print $Anzahl," | ||
| + | |||
| + | |||
| + | ===== Beispielschnipsel ===== | ||
| + | |||
| + | |||
| + | ==== STDIN ==== | ||
| + | |||
| + | |||
| + | === simpel === | ||
| + | |||
| + | while(< | ||
| + | print $_; | ||
| + | } | ||
| + | |||
| + | |||
| + | === stdin2syslogd === | ||
| + | |||
| + | # | ||
| + | use Sys:: | ||
| + | use IO::Handle; | ||
| + | $ident=" | ||
| + | $logopt=" | ||
| + | $facility=" | ||
| + | openlog $ident, $logopt, $facility; | ||
| + | $io = new IO::Handle; | ||
| + | if ($io-> | ||
| + | $daten = $io-> | ||
| + | $io-> | ||
| + | $counter++; | ||
| + | syslog ($facility, "%d: $daten", | ||
| + | } | ||
| + | closelog; | ||
| + | |||
| + | Beispielaufruf: | ||
| + | # echo "Das ist ein Test: test0002" | ||
| + | |||
| + | |||
| + | ===== lwp-request ===== | ||
| + | |||
| + | |||
| + | ==== lwp-request problem ==== | ||
| + | |||
| + | > lwp-request https:// | ||
| + | Can't connect to hostname.domain.de (certificate verify failed) | ||
| + | | ||
| + | LWP:: | ||
| + | |||
| + | Manchmal möchte man (auch wenn es unsicher ist) die SSL-Überprüfung abschalten. | ||
| + | |||
| + | |||
| + | === Lösung: Ubuntu 12.04 === | ||
| + | |||
| + | In Ubuntu 12.04 muss die Datei ''/ | ||
| + | $ENV{' | ||
| + | |||
| + | |||
| + | === Lösung: Ubuntu 14.04 === | ||
| + | |||
| + | In der Version 6.05 vom Paket libwww-perl (Ubuntu 14.04), muss die Datei ''/ | ||
| + | $ssl_opts-> | ||
| + | |||
| + | |||
| + | === Lösung: Ubuntu 16.04 === | ||
| + | |||
| + | In der Version 6.15 vom Paket libwww-perl (Ubuntu 16.04), muss die Datei ''/ | ||
| + | $ssl_opts{SSL_verify_mode} ||= 0; | ||
| + | |||
