Perl PHP'nin print_r eşdeğer () nedir?

5 Cevap php

PHP print_r son derece yararlı, ancak Perl uzaktan eşdeğer bir şey var mı acaba?

5 Cevap

@ Tchrist önerir Data::Dump. Ben bunun farkında değildim, ama bunun görünüyor itibaren, kullanımı hem çok kolay gibi görünüyor ve daha iyi görünümlü ve sonuçları yorumlamak daha kolay üreten.

Data::Dumper

Yukarıdaki linke gösterilen örneklerden bir pasajı.

use Data::Dumper;

package Foo;
sub new {bless {'a' => 1, 'b' => sub { return "foo" }}, $_[0]};

package Fuz;                       # a weird REF-REF-SCALAR object
sub new {bless \($_ = \ 'fu\'z'), $_[0]};

package main;
$foo = Foo->new;
$fuz = Fuz->new;
$boo = [ 1, [], "abcd", \*foo,
         {1 => 'a', 023 => 'b', 0x45 => 'c'}, 
         \\"p\q\'r", $foo, $fuz];

########
# simple usage
########

$bar = eval(Dumper($boo));
print($@) if $@;
print Dumper($boo), Dumper($bar);  # pretty print (no array indices)

$Data::Dumper::Terse = 1;          # don't output names where feasible
$Data::Dumper::Indent = 0;         # turn off all pretty print
print Dumper($boo), "\n";

$Data::Dumper::Indent = 1;         # mild pretty print
print Dumper($boo);

$Data::Dumper::Indent = 3;         # pretty print with array indices
print Dumper($boo);

$Data::Dumper::Useqq = 1;          # print strings in double quotes
print Dumper($boo);

Genellikle Perl olduğu gibi, saygıdeğer Veri :: Çuvalı alternatif çözümler tercih edebilirsiniz:

  • Data::Dump::Streamer Data :: Dumper daha terser çıkışı vardır, ve ayrıca veri :: Dumper daha bazı verileri serialize
  • {[(0)}] (ya da Yaml::Syck, veya başka bir YAML modülü) oldukça okunaklı YAML, verileri üretir.

Ve hata ayıklayıcı ile tabii ki, 'x' komutu ile herhangi bir değişkeni görüntüleyebilirsiniz. Özellikle form gibi ben 'x 2 $complex_structure' 2 (ya da herhangi bir sayı) iç içe verilerin sadece 2 düzeylerini görüntülemek için hata ayıklayıcı söyler burada.

Alternatif bir Data::Dumper geçerli Perl kodu üretmek olmadığını, ancak bunun yerine daha skimmable biçimi (Perl debugger'ın x komutu aynı) Dumpvalue. Aynı zamanda çok daha az bellek tüketiyor.

Yanı sıra, Data::Dumper daha değişik kenar ve köşe durumlarda daha doğru olduğu, Data::Dump::Streamer var.

I Data::Dump, bu çıkışı bulunuyor kullanmak Veri :: Çuvalı bulunuyor (yok $ Q1) biraz daha temiz olduğunu, hızlı kısayolları sağlar ve aynı zamanda DTRT çalışır, yani geçersiz bağlamda çağrıldığında STDERR yazdırmak ve edecek dökümü dize değil dönmek.

Ben aynı şeyi arıyoruz gitti ve) this lovely little Perl function, açıkça (print_r gibi sonuçlar elde etmek anlamına geliyordu bulundu.

Yazısının yazarı bir forumda tam soruyu soruyordu here.

print objectToString($json_data);

Bu çıktıyı verir:

HASH {
time                             => 1233173875
error                            => 0
node                             => HASH {
    vid                              => 1011
    moderate                         => 0
    field_datestring                 => ARRAY {
        HASH {
            value                            => August 30, 1979
        }
    }

    field_tagged_persons             => ARRAY {
        HASH {
            nid                              => undef
        }
    }

...and so on...