Programing

Perl 어레이를 인쇄하는 쉬운 방법?

crosscheck 2020. 8. 30. 07:42
반응형

Perl 어레이를 인쇄하는 쉬운 방법? (약간 서식 포함)


각 요소 사이에 쉼표가있는 Perl 배열을 쉽게 인쇄 수있는 방법이 있습니까?

for 루프를 작성하는 것은 매우 쉽지만 우아하지는 않습니다.


그냥 사용하십시오 join():

# assuming @array is your array:
print join(", ", @array);

다음을 사용할 수 있습니다 Data::Dump.

use Data::Dump qw(dump);
my @a = (1, [2, 3], {4 => 5});
dump(@a);

생성 :

"(1, [2, 3], { 4 => 5 })"

Perl을 막 시작한 사람이 이해할 수있는 종류의 명확성을 위해 코딩하는 경우, 전통적인이 구조는 높은 수준의 명확성과 가독성으로 그것이 의미하는 바를 말합니다.

$string = join ', ', @array;
print "$string\n";

이 구성은 perldoc -fjoin.

그러나 나는 항상 $,그것을 얼마나 간단 하게 만드는지 좋아 했습니다. 특수 변수 $"는 보간 용이고 특수 변수 $,는 목록 용입니다. 둘 중 하나를 동적 범위 제한 ' local' 과 결합 하여 스크립트 전체에 파급 효과가 발생하지 않도록합니다.

use 5.012_002;
use strict;
use warnings;

my @array = qw/ 1 2 3 4 5 /;

{
    local $" = ', ';
    print "@array\n"; # Interpolation.
}

또는 $ ,:

use feature q(say);
use strict;
use warnings;

my @array = qw/ 1 2 3 4 5 /;
{
    local $, = ', ';
    say @array; # List
}

특수 변수 $,perlvar에$" 문서화되어 있습니다. 키워드 및이 글로벌 문장 변수의 값을 변경의 효과를 제한하는 데 사용할 수있는 방법은 아마도 가장에 설명되어 perlsub .local

즐겨!


또한 Data :: Dumper 를 사용해 볼 수도 있습니다 . 예:

use Data::Dumper;

# simple procedural interface
print Dumper($foo, $bar);

검사 / 디버깅을 위해 Data::Printer모듈을 확인하십시오 . 한 가지 일만 수행하는 것을 의미합니다.

display Perl variables and objects on screen, properly formatted (to be inspected by a human)

Example usage:

use Data::Printer;  
p @array;  # no need to pass references

The code above might output something like this (with colors!):

   [
       [0] "a",
       [1] "b",
       [2] undef,
       [3] "c",
   ]

You can simply print it.

@a = qw(abc def hij);

print "@a";

You will got:

abc def hij

# better than Dumper --you're ready for the WWW....

use JSON::XS;
print encode_json \@some_array

Using Data::Dumper :

use strict;
use Data::Dumper;

my $GRANTstr = 'SELECT, INSERT, UPDATE, DELETE, LOCK TABLES, EXECUTE, TRIGGER';
$GRANTstr    =~ s/, /,/g;
my @GRANTs   = split /,/ , $GRANTstr;

print Dumper(@GRANTs) . "===\n\n";

print Dumper(\@GRANTs) . "===\n\n";

print Data::Dumper->Dump([\@GRANTs], [qw(GRANTs)]);

Generates three different output styles:

$VAR1 = 'SELECT';
$VAR2 = 'INSERT';
$VAR3 = 'UPDATE';
$VAR4 = 'DELETE';
$VAR5 = 'LOCK TABLES';
$VAR6 = 'EXECUTE';
$VAR7 = 'TRIGGER';
===

$VAR1 = [
          'SELECT',
          'INSERT',
          'UPDATE',
          'DELETE',
          'LOCK TABLES',
          'EXECUTE',
          'TRIGGER'
        ];
===

$GRANTs = [
            'SELECT',
            'INSERT',
            'UPDATE',
            'DELETE',
            'LOCK TABLES',
            'EXECUTE',
            'TRIGGER'
          ];

This might not be what you're looking for, but here's something I did for an assignment:

$" = ", ";
print "@ArrayName\n";

Map can also be used, but sometimes hard to read when you have lots of things going on.

map{ print "element $_\n" }   @array; 

I've not tried to run below, though. I think this's a tricky way.

map{print $_;} @array;

참고URL : https://stackoverflow.com/questions/5741101/easy-way-to-print-perl-array-with-a-little-formatting

반응형