Einträge zu Tag: Perl

Umlaute ersetzen in Perl

Erstellt: 07.01.2011 10:00

Umlaute können ein Problem sein, eine Möglichkeit dieses zu umgehen ist es die Umlaute zu ersetzen.

Hier im Beispiel werden die Umlaute in einen Hash gepackt, jeweils mit dem Zeichen gegen welches sie ersetzt werden sollen:

my $string = 'Mit so vielen Umlauten wie "äöüÖÜÄ" muß es ja schief gehen!';

my %umlaute = ("ä" => "ae", "Ä" => "Ae", "ü" => "ue", "Ü" => "Ue", "ö" => "oe", "Ö" => "Oe", "ß" => "ss" );
my $umlautkeys = join ("|", keys(%umlaute));
$string =~ s/($umlautkeys)/$umlaute{$1}/g;

print $string;

Die Ausgabe:

Mit so vielen Umlauten wie "aeoeueOeUeAe" muss es ja schief gehen!



Tagged: Perl Regex

1 Kommentar | Nach oben

Unrecognized character \xE2 in column xx at /pfad/zum/file.pl line xx.

Erstellt: 27.10.2010 16:50

Beim Aufruf des Perlscriptes bekommt man jeweils folgende Fehlermeldung:

Unrecognized character \xE2 in column 20 at /pfad/zum/file.pl line 64.
shell returned 255

Überprüft man das File mit vim sagt es das File wäre UTF-8-Codiert:

:set fileencoding
fileencoding=utf-8  

Das hexadezimale E2 ist ein â (In UTF-8 wie auch Latin1) und gehört wohl so kaum in den Code. Scheinbar hatte sich ein Encodingfehler eingeschlichen durch Copy&Paste.

(Eventuell ein Backup des Files machen und...) Ein...

$ recode latin1..utf8 /pfad/zum/file.pl

...hilft die Bösewichte zu finden:

print $row_href->{<98>filter_nameâ<80><99>}."\n";

Die Zeichen neu tippen und das Script läuft wieder sauber.



Tagged: Linux Perl

Kommentar verfassen | Nach oben

Fehler "Can't call method "login" on an undefined value at perlfile.pl line xxx." bei POP3-Abfragen.

Erstellt: 14.10.2010 12:01

Der nervige Fehler "Can't call method "login" on an undefined value at perlfile.pl line xxx." kann ganz banale Gründe haben:

Beispielscript:

#!/usr/bin/perl
# perlfile.pl
# Testet op Emails in der POP3-Box sind.
use Net::POP3;            # fuer POP3 Abfragen
my $pop;                        # wird verwendet fuer POP3 Objekt
my $pop3a = "User";           # Username fuer POP3 Account
my $pop3b = "PaSsWoRd";         # Passwort fuer POP3 Account

$pop = Net::POP3->new('mail.domain.tld', Timeout => 60, Debug => 0); # Objekt fuer POP3-Abfrage erstellen

unless ($pop->login($pop3a, $pop3b) > 0) {            # POP3 Login und ueberpruefen, ob Mails vorhanden.
        error("Keine neuen Mails in der \'$pop3a\' Mailbox.");    # Fehler/Abbruch, falls keine Mails in der Box sind.
} else {
        print "Mails da!\n";
}

Beim Ausführen:

$ perl perlfile.pl
Can't call method "login" on an undefined value at perlfile.pl line xxx.

Diese Fehlermeldung bedeutet, dass der POP3-Port 110 (Ausgehend) durch eine Firewall gesperrt ist oder dass die Zugangsdaten falsch sind.



Tagged: Linux Perl

Kommentar verfassen | Nach oben