[Dresden-pm] Dresden Perl Mongers Treffen April 2008

Aristoteles Pagaltzis pagaltzis at gmx.de
Do Apr 3 04:17:37 PDT 2008


* Josef Spillner <2005 at kuarepoti-dju.net> [2008-04-03 07:55]:
> Am Mittwoch 02 April 2008 21:55:02 schrieb Aristoteles Pagaltzis:
>>     use utf8;
>
> Das steht schon in $LANG, warum die Redundanz?

Weil es ziemlich unwahrscheinlich ist, dass Module, die du vom
CPAN gezogen hast, ausgerechnet im Zeichensatz deiner Locale
geschrieben sind.

> Ruby frisst es auch so

Perl war populär *bevor* es Unicode gab. Ruby nicht.

> Python 3.0 kommt zumindest im September raus (siehe PEP 3131).

Py3k ist neu und nicht rückwärtskompatibel. Das findest du als
Beispiel relevant?

> Java, trotz seiner vielen Macken, braucht auch keine Nanny um
> die entsprechenden Pakete zu finden. Selbstredend wertet auch
> der GCC $LANG aus und kann es ebenfalls.
>
> Im Gegensatz zu Variablennamen (dazu komme ich gleich noch in
> meiner Antwort auf die Mail von Torsten) beziehen sich die
> use/import/require-Anweisungen auf Pfadkomponenten, und da
> halte ich die Auswertung von $LANG für durchaus sinnvoll.

»Red herring«. Perl hat keinerlei Probleme, das Paket zu finden.
Es mag nur das Encoding der Quelldatei nicht ohne Deklaration.
Ob du

    use Tier::Quäler;

schreibst oder

    my $tier_quäler;

macht keinen Unterschied: die Fehlermeldung ist dieselbe.

> "require" in Perl tut es bereits, aber "use" verhält sich
> anders, das ist nicht intuitiv.

Nein. Du hast dich nur selbst durcheinandergebracht.

    $ perl
    require Tier::Quäler;
    Unrecognized character \xC3 at - line 1.
    $ perl
    require 'Tier/Quäler.pm';
    $ 

In String-Literalen kannst du beliebigen Binärmüll schreiben;
perl frisst dort ausnahmslos alles. In Bezeichnern hingegen
tut es das nicht.

-- 
*AUTOLOAD=*_;sub _{s/(.*)::(.*)/print$2,(",$\/"," ")[defined wantarray]/e;$1}
&Just->another->Perl->hack;
#Aristoteles Pagaltzis // <http://plasmasturm.org/>