Ou, se você quiser ser realmente sujo: {local $,=', ';print @array}.
musiKk de
10
Há mais de uma maneira de fazer isso ... mas essa é a maneira que não faz com que a pessoa que mantém o código depois de você odiar você. Sim, perldoc perlvar existe, mas prefiro dar uma olhada em "join ',' @array" do que acessar perlvar todas as outras linhas para descobrir o que todas as variáveis esotéricas estão fazendo.
Oesor
@Oesor: É por isso que chamei de sujo. Mas bem, olhando para as outras respostas, não sou realmente o pior ofensor. :)
musiKk
@musiKK eu gosto! É algo que eu usaria se quisesse confundir meus colegas de trabalho. :)
Alex
3
Isso funcionou muito bem para imprimir o conteúdo do diretório. print "current directory contains " . join(', ', <*>) . "\n";
No Ubuntu / Mint, instale o pacote libdata-dump-perl.
MUY Bélgica
2
Melhor resposta aqui! Também funciona com arrays multidimensionais. Mais flexível.
Léo Léopold Hertz 준영
18
Se você está codificando para o tipo de clareza que seria compreendido por alguém que está apenas começando com Perl, o tradicional este construto diz o que significa, com um alto grau de clareza e legibilidade:
$string = join ', ',@array;print"$string\n";
Esta construção está documentada em perldoc -fjoin.
No entanto, sempre gostei de como o $,torna simples . A variável especial $"é para interpolação e a variável especial $,é para listas. Combine qualquer um com a restrição de escopo dinâmica ' local' para evitar efeitos cascata em todo o script:
use feature q(say);use strict;use warnings;my@array= qw/12345/;{local $,=', ';
say @array;# List}
As variáveis especiais $,e $"são documentadas em perlvar . A localpalavra-chave e como ela pode ser usada para restringir os efeitos da alteração do valor de uma variável de pontuação global é provavelmente melhor descrita em perlsub .
Data :: Dumper é um módulo padrão e é instalado junto com o Perl. Para obter uma lista de todos os módulos e pragmáticos padrão, consulte pelrdoc perlmodlib.
shawnhcorey de
7
Para inspeção / depuração, verifique o Data::Printermódulo. Destina-se a fazer uma coisa e apenas uma coisa:
exibir variáveis Perl e objetos na tela, devidamente formatados (para serem inspecionados por um humano)
Exemplo de uso:
useData::Printer;
p @array;# no need to pass references
O código acima pode gerar algo assim (com cores!):
{local $,=', ';print @array}
.print "current directory contains " . join(', ', <*>) . "\n";
Você pode usar
Data::Dump
:Produz:
fonte
Se você está codificando para o tipo de clareza que seria compreendido por alguém que está apenas começando com Perl, o tradicional este construto diz o que significa, com um alto grau de clareza e legibilidade:
Esta construção está documentada em
perldoc -f
join
.No entanto, sempre gostei de como o
$,
torna simples . A variável especial$"
é para interpolação e a variável especial$,
é para listas. Combine qualquer um com a restrição de escopo dinâmica 'local
' para evitar efeitos cascata em todo o script:OU com $ ,:
As variáveis especiais
$,
e$"
são documentadas em perlvar . Alocal
palavra-chave e como ela pode ser usada para restringir os efeitos da alteração do valor de uma variável de pontuação global é provavelmente melhor descrita em perlsub .Aproveitar!
fonte
Além disso, você pode querer experimentar o Data :: Dumper . Exemplo:
fonte
pelrdoc perlmodlib
.Para inspeção / depuração, verifique o
Data::Printer
módulo. Destina-se a fazer uma coisa e apenas uma coisa:Exemplo de uso:
O código acima pode gerar algo assim (com cores!):
fonte
libdata-printer-perl
pacote.Você pode simplesmente
print
isso.Você terá:
fonte
use warnings;
e ver o que diz.fonte
Usando
Data::Dumper
:Gera três estilos de saída diferentes:
fonte
Pode não ser o que você está procurando, mas aqui está algo que fiz para uma tarefa:
fonte
O mapa também pode ser usado, mas às vezes é difícil de ler quando há muitas coisas acontecendo.
fonte
Não tentei correr para baixo, no entanto. Acho que é uma maneira complicada.
fonte