Что Perl эквивалентен print_r PHP ()?

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

26
задан Charles 17 February 2012 в 15:42
поделиться

5 ответов

Примечание @tchrist рекомендует Данные:: Выведите по Данным:: Самосвал. Я не знал о нем, но от взглядов его, кажусь, что и намного легче использовать и создание, лучше выглядящее и легче интерпретировать результаты.

Данные:: Самосвал:

Отрывок примеров показан в вышеупомянутой ссылке.

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);
43
ответ дан spinkus 28 November 2019 в 06:41
поделиться

Как обычно с Perl, Вы могли бы предпочесть альтернативные решения почтенным Данным:: Самосвал:

  • Данные:: Дамп:: Стример имеет более краткий вывод, чем Данные:: Самосвал, и может также сериализировать некоторые данные лучше, чем Данные:: Самосвал,
  • YAML (или Yaml:: Syck или другой модуль YAML), генерируют данные в YAML, который является довольно четким.

И конечно с отладчиком, можно отобразить любую переменную с командой 'x'. Мне особенно нравится форма' x 2 $complex_structure', где 2 (или любое число) говорит отладчику отображать только 2 уровня вложенных данных.

8
ответ дан mirod 28 November 2019 в 06:41
поделиться

Альтернатива Данные:: Самосвал , который не производит допустимый код Perl, но вместо этого более skimmable формат (то же как x команда отладчика Perl) Dumpvalue. Это также использует намного меньше памяти.

Также, существует Данные:: Дамп:: Стример , который более точен в различном краю и угловых случаях, чем Данные:: Самосвал .

6
ответ дан Aristotle Pagaltzis 28 November 2019 в 06:41
поделиться

Я использую Данные:: Дамп , это производится, немного более чистое, чем Данные:: Самосвал (никакой $VAR1), это обеспечивает быстрые ярлыки, и это также пробует к DTRT, т.е. это распечатает к STDERR, когда названо в пустом контексте и возвращать строку дампа если не.

2
ответ дан kixx 28 November 2019 в 06:41
поделиться

Я пошел, ища то же самое и нашел эта прекрасная небольшая функция Perl , явно предназначенный генерировать результаты как print_r ().

автор сценария задавал Ваш точный вопрос на форуме здесь .

print objectToString($json_data);

Дает этот вывод:

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...
2
ответ дан user 28 November 2019 в 06:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: