Atau, jika Anda ingin benar-benar kotor: {local $,=', ';print @array}.
musiKk
10
Ada lebih dari satu cara untuk melakukannya .. tetapi ini adalah cara yang tidak membuat orang memelihara kode setelah Anda membenci Anda. Ya, perldoc perlvar memang ada, tapi saya lebih suka melihat "join ',' @array" daripada menekan perlvar setiap baris lain untuk mencari tahu apa yang dilakukan semua variabel esoterik.
Oesor
@Oesor: Itu sebabnya saya menyebutnya kotor. Tapi, melihat jawaban lain, saya sebenarnya bukan pelanggar terburuk. :)
musiKk
@musiKK Saya menyukainya! Itu adalah sesuatu yang akan saya gunakan jika saya ingin membingungkan rekan kerja saya. :)
Alex
3
Ini bekerja dengan sangat baik untuk mencetak isi direktori. print "current directory contains " . join(', ', <*>) . "\n";
Jawaban terbaik disini! Bekerja dengan array multidimensi juga. Paling fleksibel.
Léo Léopold Hertz 준영
18
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 -fjoin .
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 feature q(say);use strict;use warnings;my@array= qw/12345/;{local $,=', ';
say @array;# List}
Variabel khusus $,dan $"didokumentasikan dalam perlvar . Kata localkunci, dan bagaimana dapat digunakan untuk membatasi efek mengubah nilai variabel tanda baca global mungkin paling baik dijelaskan di perlsub .
Anda memiliki koma di cetakan karena mereka ada di setiap elemen array. Anda benar-benar harus mendeklarasikan use warnings;dan melihat apa yang dikatakannya.
Toto
2
# better than Dumper --you're ready for the WWW....use JSON::XS;print encode_json \@some_array
{local $,=', ';print @array}
.print "current directory contains " . join(', ', <*>) . "\n";
Anda dapat menggunakan
Data::Dump
:Menghasilkan:
sumber
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:
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:ATAU dengan $ ,:
Variabel khusus
$,
dan$"
didokumentasikan dalam perlvar . Katalocal
kunci, dan bagaimana dapat digunakan untuk membatasi efek mengubah nilai variabel tanda baca global mungkin paling baik dijelaskan di perlsub .Nikmati!
sumber
Juga, Anda mungkin ingin mencoba Data :: Dumper . Contoh:
sumber
pelrdoc perlmodlib
.Untuk pemeriksaan / debugging, periksa
Data::Printer
modulnya. Ini dimaksudkan untuk melakukan satu hal dan hanya satu hal:Contoh penggunaan:
Kode di atas mungkin menghasilkan sesuatu seperti ini (dengan warna!):
sumber
libdata-printer-perl
paket.Anda bisa
print
melakukannya.Anda akan mendapatkan:
sumber
use warnings;
dan melihat apa yang dikatakannya.sumber
Menggunakan
Data::Dumper
:Menghasilkan tiga gaya keluaran yang berbeda:
sumber
Ini mungkin bukan yang Anda cari, tapi inilah yang saya lakukan untuk sebuah tugas:
sumber
Peta juga dapat digunakan, tetapi terkadang sulit dibaca saat Anda memiliki banyak hal.
sumber
Tapi aku belum mencoba lari di bawah. Saya pikir ini cara yang rumit.
sumber