www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Beispielprogramm

cmplx-print1.pl
#!/usr/local/bin/perl -w
# cmplx-print1.pl -- Komplexe Datenstrukturen anzeigen: Selbstgemacht

use strict 'refs';

$listp = [ { one  => 1,   two  => 2,   three => 3 },
           { eins => 1,   zwei  => 2,  drei  => 3 },
           { uno  => 'I', due => 'II', tre   => 'III' },
           "some other string",
           "some other value",
           4711,
       sub { exit 0; },
           \*STDIN,
           \substr("immutable", 0, 5),
           "That's all, folks!"
         ];

print showit($listp), "\n";

# Zeigt einen skalaren Wert an:
sub showit {
    my $what = shift;
    my $ptrtype = ref $what;
    
    return $what if not $ptrtype;   # Kein Zeiger...

    if ($ptrtype eq 'SCALAR') {
    return "SCALAR(" . showit($$what) . ")";
    } elsif ($ptrtype eq 'ARRAY') {
    return "[ " . join("\n", map { showit($_) } @{$what}) . " ]";
    } elsif ($ptrtype eq 'HASH') {
    return "{ " . join(", ",
               map { showit($_) . " => " . $what->{$_} }
                    sort keys %{$what}) . " }";
    } elsif ($ptrtype eq 'CODE' or
             $ptrtype eq 'GLOB' or
             $ptrtype eq 'LVALUE') {
    return $ptrtype . "<$what>";
    } elsif ($ptrtype eq 'REF') {
    return "REF<" . showit($$what) . ">";
    } else {
    # Ist ein anderer Typ (Objekt einer Klasse)
    return $ptrtype . "(" . showit($$what) . ")";
    }
}
               
   

[Prev] [Up] [Relevant Chapter] [Next]

[Alte Quelle]


Last modified: $Date: 2006/05/18 12:55:54 $
FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy
FreeBSD Logo