Perl - ตัวแปร
ตัวแปรคือตำแหน่งหน่วยความจำที่สงวนไว้เพื่อเก็บค่า ซึ่งหมายความว่าเมื่อคุณสร้างตัวแปรคุณจะสงวนพื้นที่ในหน่วยความจำไว้
ตามชนิดข้อมูลของตัวแปรล่ามจะจัดสรรหน่วยความจำและตัดสินใจว่าจะจัดเก็บอะไรในหน่วยความจำที่สงวนไว้ ดังนั้นโดยการกำหนดประเภทข้อมูลที่แตกต่างกันให้กับตัวแปรคุณสามารถจัดเก็บจำนวนเต็มทศนิยมหรือสตริงในตัวแปรเหล่านี้ได้
เราได้เรียนรู้ว่า Perl มีข้อมูลพื้นฐานสามประเภทดังต่อไปนี้ -
- Scalars
- Arrays
- Hashes
ดังนั้นเราจะใช้ตัวแปรสามประเภทใน Perl กscalarตัวแปรจะนำหน้าด้วยเครื่องหมายดอลลาร์ ($) และสามารถจัดเก็บตัวเลขสตริงหรือข้อมูลอ้างอิงได้ อันarrayตัวแปรจะนำหน้าด้วยเครื่องหมาย @ และจะจัดเก็บรายการสเกลาร์ตามลำดับ Finaly,Hash ตัวแปรจะนำหน้าด้วยเครื่องหมาย% และจะใช้เพื่อจัดเก็บชุดของคู่คีย์ / ค่า
Perl เก็บรักษาตัวแปรทุกประเภทในเนมสเปซแยกกัน ดังนั้นคุณสามารถใช้ชื่อเดียวกันสำหรับตัวแปรสเกลาร์อาร์เรย์หรือแฮชได้โดยไม่ต้องกลัวความขัดแย้ง ซึ่งหมายความว่า $ foo และ @foo เป็นตัวแปรสองตัวที่แตกต่างกัน
การสร้างตัวแปร
ตัวแปร Perl ไม่จำเป็นต้องถูกประกาศอย่างชัดเจนเพื่อสงวนพื้นที่หน่วยความจำ การประกาศจะเกิดขึ้นโดยอัตโนมัติเมื่อคุณกำหนดค่าให้กับตัวแปร เครื่องหมายเท่ากับ (=) ใช้เพื่อกำหนดค่าให้กับตัวแปร
โปรดทราบว่านี่เป็นสิ่งจำเป็นในการประกาศตัวแปรก่อนที่เราจะใช้หากเราใช้ use strict คำสั่งในโปรแกรมของเรา
ตัวถูกดำเนินการทางด้านซ้ายของตัวดำเนินการ = คือชื่อของตัวแปรและตัวถูกดำเนินการทางด้านขวาของตัวดำเนินการ = คือค่าที่เก็บไว้ในตัวแปร ตัวอย่างเช่น -
$age = 25; # An integer assignment
$name = "John Paul"; # A string
$salary = 1445.50; # A floating point
25 ในที่นี้ "John Paul" และ 1445.50 คือค่าที่กำหนดให้กับตัวแปร$ age , $ nameและ$ เงินเดือนตามลำดับ ในไม่ช้าเราจะเห็นว่าเราสามารถกำหนดค่าให้กับอาร์เรย์และแฮชได้อย่างไร
ตัวแปรสเกลาร์
สเกลาร์เป็นหน่วยข้อมูลเดียว ข้อมูลนั้นอาจเป็นตัวเลขจำนวนเต็มทศนิยมอักขระสตริงย่อหน้าหรือเว็บเพจทั้งหมด พูดง่ายๆว่าอาจเป็นอะไรก็ได้ แต่มีเพียงสิ่งเดียว
นี่คือตัวอย่างง่ายๆของการใช้ตัวแปรสเกลาร์ -
#!/usr/bin/perl
$age = 25; # An integer assignment
$name = "John Paul"; # A string
$salary = 1445.50; # A floating point
print "Age = $age\n";
print "Name = $name\n";
print "Salary = $salary\n";
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
Age = 25
Name = John Paul
Salary = 1445.5
ตัวแปรอาร์เรย์
อาร์เรย์คือตัวแปรที่จัดเก็บรายการค่าสเกลาร์ที่เรียงลำดับ ตัวแปรอาร์เรย์นำหน้าด้วยเครื่องหมาย "at" (@) ในการอ้างถึงองค์ประกอบเดียวของอาร์เรย์คุณจะใช้เครื่องหมายดอลลาร์ ($) พร้อมชื่อตัวแปรตามด้วยดัชนีขององค์ประกอบในวงเล็บเหลี่ยม
นี่คือตัวอย่างง่ายๆของการใช้ตัวแปรอาร์เรย์ -
#!/usr/bin/perl
@ages = (25, 30, 40);
@names = ("John Paul", "Lisa", "Kumar");
print "\$ages[0] = $ages[0]\n";
print "\$ages[1] = $ages[1]\n";
print "\$ages[2] = $ages[2]\n";
print "\$names[0] = $names[0]\n";
print "\$names[1] = $names[1]\n";
print "\$names[2] = $names[2]\n";
ที่นี่เราใช้เครื่องหมาย Escape (\) ก่อนเครื่องหมาย $ เพื่อพิมพ์ Perl อื่นจะเข้าใจว่าเป็นตัวแปรและจะพิมพ์ค่าของมัน เมื่อดำเนินการสิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
$ages[0] = 25
$ages[1] = 30
$ages[2] = 40
$names[0] = John Paul
$names[1] = Lisa
$names[2] = Kumar
ตัวแปรแฮช
แฮชคือชุดของ key/valueคู่ ตัวแปรแฮชนำหน้าด้วยเครื่องหมายเปอร์เซ็นต์ (%) หากต้องการอ้างถึงองค์ประกอบเดียวของแฮคุณจะใช้ชื่อตัวแปรแฮชตามด้วย "คีย์" ที่เกี่ยวข้องกับค่าในวงเล็บปีกกา
นี่คือตัวอย่างง่ายๆของการใช้ตัวแปรแฮช -
#!/usr/bin/perl
%data = ('John Paul', 45, 'Lisa', 30, 'Kumar', 40);
print "\$data{'John Paul'} = $data{'John Paul'}\n";
print "\$data{'Lisa'} = $data{'Lisa'}\n";
print "\$data{'Kumar'} = $data{'Kumar'}\n";
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
$data{'John Paul'} = 45
$data{'Lisa'} = 30
$data{'Kumar'} = 40
บริบทตัวแปร
Perl ถือว่าตัวแปรเดียวกันแตกต่างกันไปตามบริบทกล่าวคือสถานการณ์ที่มีการใช้ตัวแปร ลองตรวจสอบตัวอย่างต่อไปนี้ -
#!/usr/bin/perl
@names = ('John Paul', 'Lisa', 'Kumar');
@copy = @names;
$size = @names;
print "Given names are : @copy\n";
print "Number of names are : $size\n";
สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
Given names are : John Paul Lisa Kumar
Number of names are : 3
ที่นี่ @names คืออาร์เรย์ซึ่งถูกใช้ในสองบริบทที่แตกต่างกัน ก่อนอื่นเราคัดลอกไปยังอาร์เรย์อื่น ๆ เช่นรายการดังนั้นจึงส่งคืนองค์ประกอบทั้งหมดโดยสมมติว่าบริบทเป็นบริบทรายการ ต่อไปเราใช้อาร์เรย์เดียวกันและพยายามจัดเก็บอาร์เรย์นี้ในสเกลาร์ดังนั้นในกรณีนี้จะส่งคืนเพียงจำนวนองค์ประกอบในอาร์เรย์นี้โดยสมมติว่าบริบทเป็นบริบทสเกลาร์ ตารางต่อไปนี้แสดงรายการบริบทต่างๆ -
ซีเนียร์ | บริบทและคำอธิบาย |
---|---|
1 | Scalar การกำหนดให้กับตัวแปรสเกลาร์จะประเมินด้านขวามือในบริบทสเกลาร์ |
2 | List การกำหนดให้กับอาร์เรย์หรือแฮชจะประเมินด้านขวามือในบริบทรายการ |
3 | Boolean บริบทบูลีนเป็นเพียงสถานที่ใด ๆ ที่มีการประเมินนิพจน์เพื่อดูว่าเป็นจริงหรือเท็จ |
4 | Void บริบทนี้ไม่เพียง แต่ไม่สนใจว่าค่าที่ส่งคืนคืออะไร แต่ยังไม่ต้องการค่าตอบแทน |
5 | Interpolative บริบทนี้เกิดขึ้นภายในเครื่องหมายคำพูดหรือสิ่งที่ทำงานเหมือนคำพูด |