Apakah ada cara mudah untuk mencetak larik Perl dengan koma di antara setiap elemen?
Menulis perulangan for untuk melakukannya cukup mudah tetapi tidak cukup elegan .... jika itu masuk akal.
Jawaban:
Gunakan saja join()
:
# assuming @array is your array:
print join(", ", @array);
print "current directory contains " . join(', ', <*>) . "\n";
Anda dapat menggunakan Data::Dump
:
use Data::Dump qw(dump);
my @a = (1, [2, 3], {4 => 5});
dump(@a);
Menghasilkan:
"(1, [2, 3], { 4 => 5 })"
Jika Anda membuat kode untuk jenis kejelasan yang akan dipahami oleh seseorang yang baru memulai dengan Perl, konsep tradisional ini menjelaskan artinya, dengan tingkat kejelasan dan keterbacaan yang tinggi:
$string = join ', ', @array;
print "$string\n";
Konstruksi ini didokumentasikan di perldoc -f
join
.
Namun, saya selalu menyukai betapa sederhana $,
membuatnya. Variabel khusus $"
untuk interpolasi, dan variabel khusus $,
untuk daftar. Gabungkan salah satu dengan pembatasan lingkup dinamis ' local
' untuk menghindari efek riak di seluruh skrip:
use 5.012_002;
use strict;
use warnings;
my @array = qw/ 1 2 3 4 5 /;
{
local $" = ', ';
print "@array\n"; # Interpolation.
}
ATAU dengan $ ,:
use feature q(say);
use strict;
use warnings;
my @array = qw/ 1 2 3 4 5 /;
{
local $, = ', ';
say @array; # List
}
Variabel khusus $,
dan $"
didokumentasikan dalam perlvar . Kata local
kunci, dan bagaimana dapat digunakan untuk membatasi efek mengubah nilai variabel tanda baca global mungkin paling baik dijelaskan di perlsub .
Nikmati!
Juga, Anda mungkin ingin mencoba Data :: Dumper . Contoh:
use Data::Dumper;
# simple procedural interface
print Dumper($foo, $bar);
pelrdoc perlmodlib
.
Untuk pemeriksaan / debugging, periksa Data::Printer
modulnya. Ini dimaksudkan untuk melakukan satu hal dan hanya satu hal:
menampilkan variabel Perl dan objek di layar, diformat dengan benar (untuk diperiksa oleh manusia)
Contoh penggunaan:
use Data::Printer;
p @array; # no need to pass references
Kode di atas mungkin menghasilkan sesuatu seperti ini (dengan warna!):
[
[0] "a",
[1] "b",
[2] undef,
[3] "c",
]
libdata-printer-perl
paket.
Menggunakan 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)]);
Menghasilkan tiga gaya keluaran yang berbeda:
$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'
];
Peta juga dapat digunakan, tetapi terkadang sulit dibaca saat Anda memiliki banyak hal.
map{ print "element $_\n" } @array;
{local $,=', ';print @array}
.