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

บริบทนี้เกิดขึ้นภายในเครื่องหมายคำพูดหรือสิ่งที่ทำงานเหมือนคำพูด