Używam metody Data::Dumper::Dumper()
. Wydajność jest dobra, ale może być mało kompaktowa i wygląda lepiej.Jak kontrolować formatowanie danych wyjściowych Data :: Dumper?
Jak mogę to kontrolować? Jakie są lepsze alternatywy?
Używam metody Data::Dumper::Dumper()
. Wydajność jest dobra, ale może być mało kompaktowa i wygląda lepiej.Jak kontrolować formatowanie danych wyjściowych Data :: Dumper?
Jak mogę to kontrolować? Jakie są lepsze alternatywy?
Spójrz na Data::Dump za coś podobnego do Data :: Dumper, ale prawdopodobnie lepiej w ładnym druku.
Edytuj (20120304): Całkowicie zapomniałem to pytanie, ale zostało ono dzisiaj przegłosowane i pobudziło moją pamięć. Gdybym miał dzisiaj coś polecić (3 lata później), by zrobić ładne drukowanie w Perlu, z pewnością byłbym z pewnością z Data::Printer. Z danych :: Printer własnej Uzasadnienie:.
Data :: Dumper to fantastyczne narzędzie, przeznaczone do stringify struktur danych w taki sposób, że nadają się do bycia
eval
„ed powrotem wChodzi o to, wiele osób używa go (i podobnych, takich jak Data :: Dump) do drukowania struktur danych i obiektów na ekranie w celu inspekcji i debugowania, a podczas gdy użytkownik może używać tych modułów do tego, to nie znaczy, że powinien.
To gdzie Dane :: drukarki przychodzi To ma robić jedno i tylko jedno:. wyświetlania zmiennych Perl i obiektów na ekranie, odpowiednio sformatowane (być kontrolowane przez człowieka)
Alternatywą * do Data::Dumper byłoby JSON i jego realizacja Perl JSON.
* To, czy to lepiej, zależy od Ciebie.
Z pewnością lepiej jest dla komunikacji między platformami lub między różnymi językami, na przykład przygotować strukturę danych do odbioru przez javascript lub aplikację Flash. Istnieją biblioteki JSON dla większości współczesnych języków oraz wiele postmodernistycznych i zniedołężniałych. :) – Ether
Jeśli chcesz serializować dane wyjściowe do przechowywania (zamiast do wyświetlania), spójrz na Storable 's freeze()
i thaw()
. I cringe kiedykolwiek widzę Data :: Dumper używane do zapisywania struktur danych w DB lub pamięci podręcznej. :(
normalnie używam Dane :: Dump :: Streamer, ale jak mówili inni, tylko gdy opcje do danych :: Dumper nie wystarczą.
Jeśli jesteś po prostu patrząc na wyjściu zrzutu :. Smart::Comments
po prostu use
to
use Smart::Commments;
a potem można umieścić dowolną zmienną prostą w komentarzu trzy-mieszającej, tak jak poniżej:.
my $v = black_box_process();
### $v
I zrzuca go na prawie najładniejszy możliwy wydruk.
Można także zarządzać bardziej złożonych wyrażeń tak:
### ($a && ($b^($c || $d))) : ($a && ($b^($c || $d)))
Ale trzeba uważać go za „ścieżki okrężnicy”.
### $My::Package::variable
lub
###% My :: Pakiet ::
ma nigdy pracował w moim doświadczeniu. Jeśli chcę, żeby pracować wtedy muszę coś takiego:
my %stash = %My::Package::;
### %stash
to ma również szereg innych ślicznych sztuczek, które można sprawdzić, czy zapoznać się z dokumentacją.
Jedną opcją jest użycie Data::Dumper::Perltidy, który jest (bardziej lub mniej) zamiennikiem zamiennym dla Data :: Dumper :: Dumper(), ale używa formatu Perltidy do formatowania danych wyjściowych.
Data::Dumper::Concise to kolejna możliwość.
use Data::Dumper::Concise;
warn Dumper($var);
odpowiada:
use Data::Dumper;
{
local $Data::Dumper::Terse = 1;
local $Data::Dumper::Indent = 1;
local $Data::Dumper::Useqq = 1;
local $Data::Dumper::Deparse = 1;
local $Data::Dumper::Quotekeys = 0;
local $Data::Dumper::Sortkeys = 1;
warn Dumper($var);
}
Czym dokładnie jest to nie lubisz o Dane :: Dumper za wyjście? – innaM
Echoing Manni: Powinieneś przeczytać dokumentację i wskazać, jakie inne ulepszenia potrzebujesz, niż te, które można osiągnąć, modyfikując parametry. –
Mam nadzieję, że nie używasz tego do produkcji, ponieważ byłby to jedyny powód, dla którego mógłbym zobaczyć, że chciałbyś, żeby było ładniej. Pokazuje strukturę danych. To nie powinno być piękne. –