Perl - Biến
Các biến là vị trí bộ nhớ dành riêng để lưu trữ các giá trị. Điều này có nghĩa là khi bạn tạo một biến, bạn dành một số không gian trong bộ nhớ.
Dựa trên kiểu dữ liệu của một biến, trình thông dịch phân bổ bộ nhớ và quyết định những gì có thể được lưu trữ trong bộ nhớ dành riêng. Do đó, bằng cách gán các kiểu dữ liệu khác nhau cho các biến, bạn có thể lưu trữ số nguyên, số thập phân hoặc chuỗi trong các biến này.
Chúng tôi đã biết rằng Perl có ba kiểu dữ liệu cơ bản sau:
- Scalars
- Arrays
- Hashes
Theo đó, chúng ta sẽ sử dụng ba loại biến trong Perl. Ascalarbiến sẽ đứng trước một dấu đô la ($) và nó có thể lưu trữ một số, một chuỗi hoặc một tham chiếu. Anarraybiến sẽ đứng trước dấu @ và nó sẽ lưu trữ danh sách vô hướng có thứ tự. Cuối cùng,Hash biến sẽ đứng trước dấu% và sẽ được sử dụng để lưu trữ các bộ cặp khóa / giá trị.
Perl duy trì mọi kiểu biến trong một không gian tên riêng biệt. Vì vậy, bạn có thể, mà không sợ xung đột, sử dụng cùng một tên cho một biến vô hướng, một mảng hoặc một hàm băm. Điều này có nghĩa là $ foo và @foo là hai biến khác nhau.
Tạo biến
Các biến Perl không cần phải khai báo rõ ràng để dành không gian bộ nhớ. Việc khai báo xảy ra tự động khi bạn gán giá trị cho một biến. Dấu bằng (=) dùng để gán giá trị cho các biến.
Lưu ý rằng điều này là bắt buộc để khai báo một biến trước khi chúng tôi sử dụng nếu chúng tôi sử dụng use strict tuyên bố trong chương trình của chúng tôi.
Toán hạng ở bên trái của toán tử = là tên của biến và toán hạng ở bên phải của toán tử = là giá trị được lưu trữ trong biến. Ví dụ -
$age = 25; # An integer assignment
$name = "John Paul"; # A string
$salary = 1445.50; # A floating point
Ở đây 25, "John Paul" và 1445,50 lần lượt là các giá trị được gán cho các biến $ age , $ name và $ lương . Trong thời gian ngắn, chúng ta sẽ thấy cách chúng ta có thể gán giá trị cho mảng và hàm băm.
Biến vô hướng
Vô hướng là một đơn vị dữ liệu duy nhất. Dữ liệu đó có thể là một số nguyên, dấu phẩy động, một ký tự, một chuỗi, một đoạn văn hoặc toàn bộ trang web. Nói đơn giản nó có thể là bất cứ thứ gì, nhưng chỉ là một thứ duy nhất.
Đây là một ví dụ đơn giản về việc sử dụng các biến vô hướng:
#!/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";
Điều này sẽ tạo ra kết quả sau:
Age = 25
Name = John Paul
Salary = 1445.5
Biến mảng
Mảng là một biến lưu trữ một danh sách có thứ tự các giá trị vô hướng. Các biến mảng được đặt trước dấu "at" (@). Để tham chiếu đến một phần tử duy nhất của mảng, bạn sẽ sử dụng ký hiệu đô la ($) với tên biến theo sau là chỉ số của phần tử trong dấu ngoặc vuông.
Đây là một ví dụ đơn giản về việc sử dụng các biến mảng:
#!/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";
Ở đây, chúng tôi đã sử dụng dấu thoát (\) trước dấu $ chỉ để in nó. Perl khác sẽ hiểu nó như một biến và sẽ in ra giá trị của nó. Khi được thực thi, điều này sẽ tạo ra kết quả sau:
$ages[0] = 25
$ages[1] = 30
$ages[2] = 40
$names[0] = John Paul
$names[1] = Lisa
$names[2] = Kumar
Biến băm
Hàm băm là một tập hợp của key/valuecặp. Các biến băm được đặt trước dấu phần trăm (%). Để tham chiếu đến một phần tử duy nhất của hàm băm, bạn sẽ sử dụng tên biến băm theo sau là "khóa" được liên kết với giá trị trong dấu ngoặc nhọn.
Đây là một ví dụ đơn giản về việc sử dụng biến băm -
#!/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";
Điều này sẽ tạo ra kết quả sau:
$data{'John Paul'} = 45
$data{'Lisa'} = 30
$data{'Kumar'} = 40
Bối cảnh biến
Perl xử lý cùng một biến khác nhau dựa trên Ngữ cảnh, tức là, tình huống mà một biến đang được sử dụng. Hãy kiểm tra ví dụ sau:
#!/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";
Điều này sẽ tạo ra kết quả sau:
Given names are : John Paul Lisa Kumar
Number of names are : 3
Ở đây @names là một mảng, được sử dụng trong hai ngữ cảnh khác nhau. Đầu tiên, chúng tôi sao chép nó vào bất kỳ mảng nào khác, tức là danh sách, vì vậy nó trả về tất cả các phần tử giả định rằng ngữ cảnh đó là ngữ cảnh danh sách. Tiếp theo, chúng tôi sử dụng cùng một mảng và cố gắng lưu trữ mảng này dưới dạng vô hướng, vì vậy trong trường hợp này, nó chỉ trả về số phần tử trong mảng này giả sử rằng ngữ cảnh đó là ngữ cảnh vô hướng. Bảng sau liệt kê các ngữ cảnh khác nhau -
Sr.No. | Bối cảnh & Mô tả |
---|---|
1 | Scalar Việc gán cho một biến vô hướng đánh giá phía bên phải trong ngữ cảnh vô hướng. |
2 | List Việc gán cho một mảng hoặc một hàm băm sẽ đánh giá phía bên phải trong ngữ cảnh danh sách. |
3 | Boolean Bối cảnh Boolean chỉ đơn giản là bất kỳ nơi nào mà một biểu thức đang được đánh giá để xem liệu nó đúng hay sai. |
4 | Void Bối cảnh này không chỉ không quan tâm giá trị trả về là gì mà thậm chí còn không muốn giá trị trả về. |
5 | Interpolative Ngữ cảnh này chỉ xảy ra bên trong dấu ngoặc kép hoặc những thứ hoạt động như dấu ngoặc kép. |