อาร์เรย์ Perl
อาร์เรย์เป็นค่าสเกลาเก็บไว้รายการเรียงลำดับของตัวแปร
@ จุดเริ่มต้นของอาร์เรย์ของตัวแปร องค์ประกอบมากมาย Accessโดยใช้ตัวแปร $ + ชื่อ + [ดัชนี] การอ่านรูปแบบตัวอย่างดังต่อไปนี้:
#!/usr/bin/perl @hits = (25, 30, 40); @names = ("google", "w3big", "taobao"); print "\$hits[0] = $hits[0]\n"; print "\$hits[1] = $hits[1]\n"; print "\$hits[2] = $hits[2]\n"; print "\$names[0] = $names[0]\n"; print "\$names[1] = $names[1]\n"; print "\$names[2] = $names[2]\n";
โปรแกรมที่ใช้สัญลักษณ์ $ \ ที่จะหลบหนีเขาจึงเอาท์พุท
โปรแกรมข้างต้นผลลัพธ์คือ:
$hits[0] = 25 $hits[1] = 30 $hits[2] = 40 $names[0] = google $names[1] = w3big $names[2] = taobao
การสร้างอาร์เรย์
ตัวแปรอาร์เรย์ที่มีการเริ่มต้นที่สัญลักษณ์@ องค์ประกอบที่อยู่ในวงเล็บยังสามารถ Qwเริ่มต้นกำหนดอาร์เรย์
@array = (1, 2, 'Hello'); @array = qw/这是 一个 数组/;
แถวที่สองใช้Qw // ผู้ประกอบการซึ่งจะส่งกลับรายการของสตริงที่องค์ประกอบมากมายคั่นด้วยช่องว่างแน่นอนคุณยังสามารถใช้หลายบรรทัดเพื่อกำหนดอาร์เรย์:
@days = qw/google taobao ... w3big/;
นอกจากนี้คุณยังสามารถกำหนดดัชนีเพื่ออาร์เรย์ดังต่อไปนี้:
$array[0] = 'Monday'; ... $array[6] = 'Sunday';
การเข้าถึงองค์ประกอบมากมาย
องค์ประกอบมากมาย Accessโดยใช้ตัวแปร $ + ชื่อ + [ดัชนี] การอ่านรูปแบบตัวอย่างดังต่อไปนี้:
@sites = qw/google taobao w3big/; print "$sites[0]\n"; print "$sites[1]\n"; print "$sites[2]\n"; print "$sites[-1]\n"; # 负数,反向读取
โปรแกรมข้างต้นผลลัพธ์คือ:
google taobao w3big w3big
ดัชนีอาร์เรย์เริ่มจาก 0 ซึ่งเป็น 0 สำหรับองค์ประกอบแรกองค์ประกอบที่สองคือ 1, และอื่น ๆ
เชิงลบจากการอ่านย้อนกลับ, -1 เป็นองค์ประกอบแรก -2 เป็นองค์ประกอบที่สอง
หมายเลขซีเรียอาร์เรย์
Perlให้ลำดับที่อาจจะอยู่ในรูปแบบของอาเรย์ของการส่งออกในรูปแบบของค่าสิ้นค่าเริ่มต้นนั้น + .. , ตัวอย่างดังต่อไปนี้:
#!/usr/bin/perl @var_10 = (1..10); @var_20 = (10..20); @var_abc = (a..z); print "@var_10\n"; # 输出 1 到 10 print "@var_20\n"; # 输出 10 到 20 print "@var_abc\n"; # 输出 a 到 z
<p>执行以上程序,输出结果为:</p> <pre> 1 2 3 4 5 6 7 8 9 10 10 11 12 13 14 15 16 17 18 19 20 a b c d e f g h i j k l m n o p q r s t u v w x y z
ขนาดอา
บริบทถูกกำหนดโดยขนาดของสเกลาอาร์เรย์อาร์เรย์ :
@array = (1,2,3); print "数组大小: ",标量 @array,"\n";
ส่งกลับความยาวของอาร์เรย์เป็นอาร์เรย์ของขนาดทางกายภาพมากกว่าจำนวนขององค์ประกอบที่เราสามารถดูตัวอย่างต่อไปนี้:
#!/uer/bin/perl @array = (1,2,3); $array[50] = 4; $size = @array; $max_index = $#array; print "数组大小: $size\n"; print "最大索引: $max_index\n";
โปรแกรมข้างต้นผลลัพธ์คือ:
数组大小: 51 最大索引: 50
ที่สามารถเห็นได้จากการส่งออกผลองค์ประกอบอาร์เรย์เพียงสี่ แต่ขนาดของอาร์เรย์ที่ 51
การเพิ่มและลบองค์ประกอบมากมาย
Perl ให้จำนวนของฟังก์ชันที่มีประโยชน์เพื่อเพิ่มและลบองค์ประกอบมากมาย
ถ้าไม่มีประสบการณ์การเขียนโปรแกรมก่อนที่คุณอาจจะขอให้สิ่งที่เป็นฟังก์ชั่นในความเป็นจริงก่อนที่เราจะใช้พิมพ์ที่เป็นฟังก์ชั่นการส่งออก
ตารางต่อไปนี้แสดงฟังก์ชั่นการจัดการอาร์เรย์ที่พบบ่อย:
เลขที่ | ประเภทและคำอธิบาย |
---|---|
1 | ผลักดัน @ARRAY รายการ รายการของค่าลงในตอนท้ายของอาร์เรย์ |
2 | @ARRAY ป๊อป Pop อาร์เรย์ค่าสุดท้ายและผลตอบแทนมัน |
3 | เปลี่ยน @ARRAY อาร์เรย์ pop ค่าแรกและส่งกลับไป ค่าดัชนีของอาร์เรย์เป็นลำดับลบหนึ่ง |
4 | unshift @ARRAY รายการ รายการในด้านหน้าของอาร์เรย์และส่งกลับจำนวนขององค์ประกอบในแถวใหม่ |
ตัวอย่าง
#!/usr/bin/perl # 创建一个简单是数组 @sites = ("google","w3big","taobao"); print "1. \@sites = @sites\n"; # 在数组结尾添加一个元素 push(@sites, "baidu"); print "2. \@sites = @sites\n"; # 在数组开头添加一个元素 unshift(@sites, "weibo"); print "3. \@sites = @sites\n"; # 删除数组末尾的元素 pop(@sites); print "4. \@sites = @sites\n"; # 移除数组开头的元素 shift(@sites); print "5. \@sites = @sites\n";
โปรแกรมข้างต้นผลลัพธ์คือ:
อาร์เรย์ตัด
เราสามารถตัดอาร์เรย์และส่งกลับอาร์เรย์ใหม่หลังจากตัด:
#!/usr/bin/perl @sites = qw/google taobao w3big weibo qq facebook 网易/; @sites2 = @sites[3,4,5]; print "@sites2\n";
โปรแกรมข้างต้นผลลัพธ์คือ:
weibo qq facebook
คุณต้องระบุดัชนีที่ถูกต้องของค่าดัชนีอาร์เรย์สามารถเป็นค่าลบหลังจากที่จำนวนบวกค่าดัชนีแต่ละคนมีเครื่องหมายจุลภาค
ถ้าดัชนีอยู่อย่างต่อเนื่องคุณสามารถใช้.. เพื่อเป็นตัวแทนของช่วงที่ระบุ:
#!/usr/bin/perl @sites = qw/google taobao w3big weibo qq facebook 网易/; @sites2 = @sites[3..5]; print "@sites2\n";
โปรแกรมข้างต้นผลลัพธ์คือ:
weibo qq facebook
เปลี่ยนองค์ประกอบมากมาย
Perl องค์ประกอบมากมายจะใช้สลับกันในประกบกัน () ฟังก์ชันเป็นดังนี้:
splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ]
พารามิเตอร์คำอธิบาย:
- @ARRAY: ในการแทนที่อาร์เรย์
- OFFSET: ตำแหน่งเริ่มต้น
- ความยาว: เปลี่ยนจำนวนขององค์ประกอบ
- LIST: แทนที่รายการองค์ประกอบ
ตัวอย่างต่อไปนี้เป็นจุดเริ่มต้นที่จะเปลี่ยนองค์ประกอบที่หกของอาร์เรย์ของห้าองค์ประกอบ:
#!/usr/bin/perl @nums = (1..20); print "替换前 - @nums\n"; splice(@nums, 5, 5, 21..25); print "替换后 - @nums\n";
โปรแกรมข้างต้นผลลัพธ์คือ:
替换前 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 替换后 - 1 2 3 4 5 21 22 23 24 25 11 12 13 14 15 16 17 18 19 20
แปลงสตริงเป็นอาร์เรย์
Perl จะแปลงอาร์เรย์สตริงใช้แยก () ฟังก์ชันเป็นดังนี้:
split [ PATTERN [ , EXPR [ , LIMIT ] ] ]
พารามิเตอร์คำอธิบาย:
- PATTERN: คั่นพื้นที่เริ่มต้น
- expr: ระบุจำนวนของสตริง
- ได้สูงสุด: ถ้าคุณระบุพารามิเตอร์นี้จำนวนขององค์ประกอบในอาร์เรย์กลับ
ตัวอย่าง
#!/usr/bin/perl # 定义字符串 $var_test = "w3big"; $var_string = "www-w3big-com"; $var_names = "google,taobao,w3big,weibo"; # 字符串转为数组 @test = split('', $var_test); @string = split('-', $var_string); @names = split(',', $var_names); print "$test[3]\n"; # 输出 com print "$string[2]\n"; # 输出 com print "$names[3]\n"; # 输出 weibo
โปรแกรมข้างต้นผลลัพธ์คือ:
o com weibo
อาร์เรย์จะถูกแปลงเป็นสตริง
Perl ในอาร์เรย์เป็นสตริงที่ใช้ร่วม () ฟังก์ชันเป็นดังนี้:
join EXPR, LIST
พารามิเตอร์คำอธิบาย:
- expr: เชื่อมต่อ
- List: รายการหรืออาร์เรย์
ตัวอย่าง
#!/usr/bin/perl # 定义字符串 $var_string = "www-w3big-com"; $var_names = "google,taobao,w3big,weibo"; # 字符串转为数组 @string = split('-', $var_string); @names = split(',', $var_names); # 数组转为字符串 $string1 = join( '-', @string ); $string2 = join( ',', @names ); print "$string1\n"; print "$string2\n";
โปรแกรมข้างต้นผลลัพธ์คือ:
www-w3big-com google,taobao,w3big,weibo
เรียงลำดับอาร์เรย์
Perl อาร์เรย์จัดเรียงใช้การจัดเรียง () ฟังก์ชันเป็นดังนี้:
sort [ SUBROUTINE ] LIST
พารามิเตอร์คำอธิบาย:
- subroutine: ระบุกฎ
- ได้สูงสุด: รายการหรืออาร์เรย์
ตัวอย่าง
#!/usr/bin/perl # 定义数组 @sites = qw(google taobao w3big facebook); print "排序前: @sites\n"; # 对数组进行排序 @sites = sort(@sites); print "排序前: @sites\n";
โปรแกรมข้างต้นผลลัพธ์คือ:
排序前: google taobao w3big facebook 排序前: facebook google w3big taobao
หมายเหตุ: การเรียงลำดับอาร์เรย์จะเรียงตาม ASCII ค่าตัวเลข ดังนั้นเราจึงมีดีกว่าแปลงแรกเมื่อองค์ประกอบของอาร์เรย์แต่ละการจัดเรียงตัวพิมพ์เล็กก่อนที่จะเรียงลำดับ
ตัวแปรพิเศษ: $ [
ตัวแปร$ พิเศษ [ดัชนีแรกของอาร์เรย์ทั่วไป0 ถ้าเรา$ [ตั้งค่าเป็น1 ค่าดัชนีแรกของอาเรย์คือ 1, ที่สองคือ 2 และอื่น ๆ ตัวอย่างมีดังนี้
#!/usr/bin/perl # 定义数组 @sites = qw(google taobao w3big facebook); print "网站: @sites\n"; # 设置数组的第一个索引为 1 $[ = 1; print "\@sites[1]: $sites[1]\n"; print "\@sites[2]: $sites[2]\n";
โปรแกรมข้างต้นผลลัพธ์คือ:
网站: google taobao w3big facebook @sites[1]: google @sites[2]: taobao
โดยทั่วไปเราไม่แนะนำให้ใช้ตัวแปร$ พิเศษ [ในรุ่นใหม่ของPerl ตัวแปรเป็นล้าสมัย
ผสานอาร์เรย์
องค์ประกอบของอาร์เรย์เป็นเครื่องหมายจุลภาคเพื่อแยกเรายังสามารถใช้เครื่องหมายจุลภาคเพื่อผสานอาร์เรย์ดังต่อไปนี้:
#!/usr/bin/perl @numbers = (1,3,(4,5,6)); print "numbers = @numbers\n";
โปรแกรมข้างต้นผลลัพธ์คือ:
numbers = 1 3 4 5 6
นอกจากนี้คุณยังสามารถฝังอาร์เรย์หลายในอาร์เรย์และผสานเข้ากับอาร์เรย์หลัก:
#!/usr/bin/perl @odd = (1,3,5); @even = (2, 4, 6); @numbers = (@odd, @even); print "numbers = @numbers\n";
โปรแกรมข้างต้นผลลัพธ์คือ:
numbers = 1 3 5 2 4 6
เลือกองค์ประกอบจากรายการ
รายการที่สามารถนำมาใช้เป็นอาร์เรย์ใช้ค่าดัชนีที่ระบุในรายการหลังจากองค์ประกอบที่ระบุสามารถอ่านได้ดังต่อไปนี้:
#!/usr/bin/perl $var = (5,4,3,2,1)[4]; print "var 的值为 = $var\n"
โปรแกรมข้างต้นผลลัพธ์คือ:
var 的值为 = 1
ในทำนองเดียวกันเราสามารถใช้ในอาร์เรย์.. อ่านช่วงที่ระบุขององค์ประกอบ:
#!/usr/bin/perl @list = (5,4,3,2,1)[1..3]; print "list 的值 = @list\n";
โปรแกรมข้างต้นผลลัพธ์คือ:
list 的值 = 4 3 2