Eine Argumentliste strigifizieren

Name

argList

Aufgabe

Eine Argumentliste stringifizieren.

Wir haben ein bisschen mit verschieden bizarren Lösungen für das Problem herumgespielt, wie man eine Funktion schreiben kann, die ihre Argumentliste stringifiziert, also argList(qw(foo bar baz quux)) := "('foo', 'bar', 'baz', 'quux')". Hier ein Beitrag mit einem ge'tie'ten Hash, der auf zwei verschiedene Weisen ins Spiel kommt, einmal als Identitätsfunktion, da die ganze Arbeit in einer Stringinterpolation geschieht, einmal als Iterator über die auf STDIN übergebenen Argumente.

Ich habe mich bemüht, das Programm so zu schreiben, dass auch nach einer Deobfuszierung nicht sofort offensichtlich ist, was passiert. Für den Perl-Einsteiger dürfte es schon was zum Knobeln sein. Am besten gefällt mir persönlich die einzelne geschwuffene Klammer rechts. wink

Skript

#!/usr/bin/perl -apl
package                       argList
;$                            argList
=q(', ');sub TIEHASH{bless{   argList
=>[@_[1..$#_]]}=>             argList
}sub SCALAR{shift@{$_[0]->{   argList
}}}sub FETCH{"('$_[1]')"}%    argList
=(                            argList
=>                            argList
);tie%                        argList
=>                            argList
=>@F;$_="$                    argList{
join$                         argList
=>map local$                  argList
=%$_=>(\%                     argList
)x@F}";

Ergänzungen, Kommentare

Kommentare werden am besten in folgender Form vorgenommen, damit sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---### Main.??? - 14 Jul 2003 - Betreff

UtilPerlSkripteSubForm edit

Titel Eine Argumentliste strigifizieren
Autor
Bereich PerlSkripteJokes
Topic revision: 2006-09-27, MirkoWestermeier
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.