Her eleman arasında virgül bulunan bir Perl dizisi yazdırmanın kolay bir yolu var mı ?
Bunu yapmak için bir for döngüsü yazmak oldukça kolaydır, ancak pek şık değil .... eğer mantıklıysa.
Yanıtlar:
Sadece şunu kullanın join():
# assuming @array is your array:
print join(", ", @array);
print "current directory contains " . join(', ', <*>) . "\n";
Şunları kullanabilirsiniz Data::Dump:
use Data::Dump qw(dump);
my @a = (1, [2, 3], {4 => 5});
dump(@a);
Üretir:
"(1, [2, 3], { 4 => 5 })"
Perl ile yeni başlayan birinin anlayacağı türden bir netlik kodluyorsanız, geleneksel bu yapı ne anlama geldiğini yüksek derecede netlik ve okunaklılıkla söyler:
$string = join ', ', @array;
print "$string\n";
Bu yapı içinde belgelenmiştir perldoc -fjoin.
Ancak, bunu ne kadar basitleştirdiğini her zaman sevmişimdir $,. Özel değişken $"enterpolasyon içindir ve özel değişken $,listeler içindir. localKomut dosyası boyunca dalgalanma efektlerinden kaçınmak için ikisinden birini dinamik kapsam kısıtlama ile birleştirin ' ':
use 5.012_002;
use strict;
use warnings;
my @array = qw/ 1 2 3 4 5 /;
{
local $" = ', ';
print "@array\n"; # Interpolation.
}
VEYA $ ile ,:
use feature q(say);
use strict;
use warnings;
my @array = qw/ 1 2 3 4 5 /;
{
local $, = ', ';
say @array; # List
}
Özel değişkenler $,ve perlvar$" olarak belgelenmiştir . Anahtar kelime ve küresel bir noktalama değişkenin değerini değiştirerek etkilerini sınırlamak için nasıl kullanılabileceğini muhtemelen en iyi açıklanan perlsub .local
Zevk almak!
Ayrıca Data :: Dumper'ı da denemek isteyebilirsiniz . Misal:
use Data::Dumper;
# simple procedural interface
print Dumper($foo, $bar);
pelrdoc perlmodlib.
İnceleme / hata ayıklama için Data::Printermodülü kontrol edin . Yalnızca bir şeyi ve tek bir şeyi yapmak içindir:
Perl değişkenlerini ve nesnelerini ekranda uygun şekilde biçimlendirilmiş olarak görüntüleyin (bir insan tarafından incelenecek)
Örnek kullanım:
use Data::Printer;
p @array; # no need to pass references
Yukarıdaki kod şuna benzer bir çıktı verebilir (renklerle!):
[
[0] "a",
[1] "b",
[2] undef,
[3] "c",
]
libdata-printer-perlpaketi kurabilirsiniz .
Kullanarak 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)]);
Üç farklı çıktı stili üretir:
$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'
];
Harita da kullanılabilir, ancak bazen çok fazla işiniz varken okumak zordur.
map{ print "element $_\n" } @array;
{local $,=', ';print @array}.