Hilfe, was tut dieses Skript!!!
Michael
- perl
0 Linksetzer0 Cheatah
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;
<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>
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