มีวิธีง่ายๆในการพิมพ์อาร์เรย์ Perl โดยใช้เครื่องหมายจุลภาคระหว่างแต่ละองค์ประกอบหรือไม่?
การเขียน for loop นั้นทำได้ค่อนข้างง่าย แต่ไม่สวยหรูนัก .... ถ้าเป็นเช่นนั้น
มีวิธีง่ายๆในการพิมพ์อาร์เรย์ Perl โดยใช้เครื่องหมายจุลภาคระหว่างแต่ละองค์ประกอบหรือไม่?
การเขียน for loop นั้นทำได้ค่อนข้างง่าย แต่ไม่สวยหรูนัก .... ถ้าเป็นเช่นนั้น
คำตอบ:
เพียงใช้join()
:
# assuming @array is your array:
print join(", ", @array);
print "current directory contains " . join(', ', <*>) . "\n";
คุณสามารถใช้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 -f
join
โครงสร้างนี้จะถูกบันทึกไว้ใน
อย่างไรก็ตามฉันชอบความเรียบง่าย$,
มาโดยตลอด ตัวแปรพิเศษใช้ $"
สำหรับการแก้ไขและตัวแปรพิเศษใช้$,
สำหรับรายการ รวมอันใดอันหนึ่งเข้ากับการ จำกัด ขอบเขตไดนามิก ' 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 local
คำหลักและวิธีที่จะสามารถนำมาใช้เพื่อ จำกัด ผลกระทบของการเปลี่ยนแปลงค่าตัวแปรเครื่องหมายวรรคตอนโลกที่อาจจะอธิบายที่ดีที่สุดในperlsub perlsub
สนุก!
นอกจากนี้คุณอาจต้องการที่จะลองข้อมูล :: Dumper ตัวอย่าง:
use Data::Dumper;
# simple procedural interface
print Dumper($foo, $bar);
pelrdoc perlmodlib
ที่จะได้รับรายชื่อของทุกเน้นมาตรฐานและโมดูลให้ดู
สำหรับการตรวจสอบ / แก้ไขจุดบกพร่องให้ตรวจสอบData::Printer
โมดูล มีไว้เพื่อทำสิ่งหนึ่งสิ่งเดียวเท่านั้น:
แสดงตัวแปรและวัตถุ Perl บนหน้าจอจัดรูปแบบอย่างถูกต้อง (ให้มนุษย์ตรวจสอบ)
ตัวอย่างการใช้งาน:
use Data::Printer;
p @array; # no need to pass references
โค้ดด้านบนอาจแสดงผลแบบนี้ (พร้อมสี!):
[
[0] "a",
[1] "b",
[2] undef,
[3] "c",
]
libdata-printer-perl
แพ็คเกจได้
คุณสามารถprint
มัน
@a = qw(abc def hij);
print "@a";
คุณจะได้รับ:
abc def hij
use warnings;
และดูว่ามันพูดอย่างไร
# better than Dumper --you're ready for the WWW....
use JSON::XS;
print encode_json \@some_array
ใช้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)]);
สร้างรูปแบบเอาต์พุตที่แตกต่างกันสามแบบ:
$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'
];
นี่อาจไม่ใช่สิ่งที่คุณกำลังมองหา แต่นี่คือสิ่งที่ฉันทำเพื่องานมอบหมาย:
$" = ", ";
print "@ArrayName\n";
นอกจากนี้ยังสามารถใช้แผนที่ได้ แต่บางครั้งก็อ่านยากเมื่อคุณมีสิ่งต่างๆเกิดขึ้นมากมาย
map{ print "element $_\n" } @array;
ฉันไม่ได้พยายามวิ่งด้านล่าง ฉันคิดว่านี่เป็นวิธีที่ยุ่งยาก
map{print $_;} @array;
{local $,=', ';print @array}
.