Archiv für den Tag: 15. Januar 2010

print_r für Perl

Ich nutze unter PHP recht oft die Funktion print_r für’s Debugging. Diese Funktion gibt eine beliebige Variable strukturiert aus. Sinnvoll ist das natürlich am meisten bei Arrays und Objekten.

Für Perl gibt es kein print_r, dafür aber Data::Dumper (CPAN).

Ein kleines Beispiel:

use Data::Dumper;
my @arr = qw(foo bar foobar);
my %hash = (
             foo => 'bar',
             bar => @arr
           );
print Dumper(@arr, \%hash);

Das ergibt:

$VAR1 = [
          'foo',
          'bar',
          'foobar'
        ];
$VAR2 = {
          'bar' => $VAR1,
          'foo' => 'bar'
        };

Steht Data::Dumper mal nicht zur Verfügung geht es zur Not auch ohne.

Ein einfaches Array kann man sich so ansehen:

print "@array";

Mit dem Array aus den Beispiel von oben ergibt das:

foo bar foobar

Bei Hashs funktioniert das aber nicht. Hier geht es aber so:

my %hash =  (
              A => 1,
              B => 2,
              C => 3,
            );

{
  local $, = ' ';
  print %hash, $/;
}

Die Ausgabe sieht so aus:

A 1 C 3 B 2

Zugegeben, Data::Dumper ist da optisch besser, aber in der Not frisst der Teufel Fliegen…