Michael: Hilfe, was tut dieses Skript!!!

Hallo,

bin gerade dabei mich in Perl einzuarbeiten und bin dabei über dieses Skript gestolpert! Kann mir jemand erklären, was genau es tut? Möglichst so, dass auch ich es verstehen kann!

Danke, schon mal im vorraus!!

#!/usr/bin/perl -n
                     printf "Serial: %s  Type: %s  Code: %s\n",
                         map {
                             tr/a-zA-Z0-9+-/ -_/;
                             $_ = unpack 'u', chr(32 + length()*3/4) . $_;
                             s/\0+$//;
                             $_ ^= "C" x length;
                         } /.([^.]+)/g;

  1. <http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlre.html#regular expressions>

    http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlfunc.html#item_length
    <http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlop.html#assignment operators>
    <http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlop.html#bitwise or and exclusive or>

    http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlfunc.html#item_s/

    <http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlop.html#additive operators>
    http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlfunc.html#item_chr
    http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlfunc.html#item_unpack

    http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlfunc.html#item_tr/

    http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlfunc.html#item_map

    http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlfunc.html#item_printf

    <http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlrun.html#command switches>

  2. Hi,

    bin gerade dabei mich in Perl einzuarbeiten und bin dabei über dieses Skript gestolpert! Kann mir jemand erklären, was genau es tut?

    dazu bräuchte ich die näheren Umstände, so sehr abstrahieren kann ich nun auch nicht. Ich kann Dir aber sagen, wo Du die Bedeutung der einzelnen Befehle findest.

    #!/usr/bin/perl -n

    perldoc perlrun, die Bedeutung von -n ist wichtig.

    printf "Serial: %s  Type: %s  Code: %s\n",

    perldoc -f printf

    map {

    perldoc -f map

    tr/a-zA-Z0-9+-/ -_/;

    perldoc perlop
    perldoc -f tr///
    (Ich bin mir aber nicht sicher, ob die Anweisung so sinnvoll ist...)

    $_

    perldoc perlvar

    = unpack 'u', chr(32 + length()*3/4) . $_;

    perldoc -f unpack
    perldoc -f pack
    perldoc -f chr
    perldoc -f length
    (Die letzten beiden sind im Grunde trivial.)

    s/\0+$//;

    perldoc perlre

    $_ ^= "C" x length;

    perldoc perlop
    Da "^=" nicht wirklich und "^" nur schwer zu finden ist:
    "Binary ``^'' returns its operators XORed together bit by bit."; es bedeutet "a ^= b" so viel wie "a = a ^ b".

    } /.([^.]+)/g;

    perldoc perlre

    Nein, leicht zu verstehen ist es nicht. Mir ist es nicht gelungen, vernünftige Eingaben für das Script zu finden, so daß die Ausgabe einen Sinn ergibt.

    Cheatah