Hour 2: Perl’s Building Blocks: Numbers and Strings
2.1) Những khái niệm cơ bản đầu tiên:
- Scalars – Mỗi một ngôn ngữ lập trình – và mỗi một ngôn ngữ con người đều có bắt đầu giống nhau. Bạn có thể nhận được một vài tứ nói về điều đó. Trong Perl, những số và chuỗi là những thành phần cơ bản nhất của quá trình chuyển đổi, và những thành phần đó được gọi là scalars.
- Values constants hoặc literals – Một số scalars trong Perl có thể thể hiện thông tin không thay đổi trong cả vòng đời của chương trình. Một số ngôn ngữ gọi là values constants hoặc literals.
- Scalar variables – Những loại khác của scalars trong Perl chúng được thay đổi, được gọi là scalars variables. Những biến lưu trữ dữ liệu khi bạn thao tác chúng. Bạn có thể thay đổi nội dung của những biến bởi vì chúng chỉ đơn thuần hành động như xử lý cho dự liệu mà chúng miêu tả.
2.2) Literals
Perl có hai kiểu khác nhau của scalar constants được gọi là literals: numeric literals và string literals.
Numbers
Numeric literals là những số, và Perl chấp nhận một số cách khác nhau cho việc viết những số.
| Number | Type of Literal |
| 6 | Một số nguyên |
| 12.5 | Một số con trỏ động |
| 15. | Một số con trỏ động khác |
| .7320508 | Và đây nữa, một số con trỏ động khác |
| 1e10 | Số viết kiểu khoa học |
| 6.67E – 33 | Số kiểu khoa học (e hoặc E đều chấp nhận) |
| 4_294_296 | Một số lớn cùng với những thể hiện gạch chân của dấu phẩy |
Strings
String literals trong Perl là những tập hợp ký tự, như Hello, World. Chúng có thể chứa như data như bạn muốn; Chuỗi thực tế không có giới hạn trên kích thước cho phép của tổng số dung dượng của bộ nhớ ảo trên máy tính của bạn. Chuỗi cũng có có thể chứa mọi loại dữ liệu – Simple ASCII text, ASCII cùng với những bit lớn, thậm chí cả dữ liệu nhị phân, Chuỗi thậm chí có thể là rỗng.
Sử dụng dấu ‘ ’ và “ ” để định nghĩa một chuỗi. Ký tự backslash (\) được sử dụng để quy định cho những ký tự đặc biệt.
Ví dụ những tập hợp String Escape
| Sequence | Represents |
| \n | Dòng mới |
| \r | Trở về đầu dòng |
| \t | Tab |
| \b | Khoảng trắng |
| \u | Chuyển ký tự tiếp theo thành chữ hoa |
| \l | Chuyển ký tự tiếp theo thành chữ thường |
| \\ | Hiện một ký tự backslash (\) |
| \’ | Hiện một ký tự dấu nháy đơn ‘ |
| \” | Hiện một ký tự dấu nháy kép “ |
Perl cung cấp một kỹ thuật khác chú thích: Các toán tử qq và qq. Để sử dụng qq, bạn cần quanh chuỗi bởi qq() thay cho dấu ngoặc kép:
Ví dụ:
q(I said, “Go then,” and he said “I’m gone”) hay qq(I said, “Go then,” and he said “I’m gone”)
Cũng giống như: “I said, \”Go then,\” and he said \”I’m gone\””
Như vậy vể bản chất hai câu lệnh sau là như nhau:
print qq(I said, “Go then,” and he said “I’m gone”);
print “I said, \”Go then,\” and he said \”I’m gone\””;
Chú ý: print là hàm dùng để in ra màn hình một chuỗi bất kỳ, sẽ học sau.
2.3) Biến số:
Biến số trong perl được đặc trưng bởi tiền tố $ đứng trước. Ví dụ:
$name, $tuổi.
Perl phân biệt chữ hoa và chữ thường, thế nên các biến sau là khác nhau:
$value
$VALUE
$Value
$valuE
Biến số đặc biệt: $_
Perl có một biến số đặc biệt, $_, mà giá trị được sử dụng như là một “hiện thời” bởi nhiều toán tử và hàm số. Cho ví dụ, nếu bạn đơn giản in trạng thái bởi nó – không chỉ định scalar variable của chuỗi string literal để in ra màn hình – Perl sẽ in giá trị hiện thời của $_.
$_=”Dark Side of the Moon”;
print; # In ra giá trị của $_, “Dark side…”
2.4) Biểu thức và toán tử
Toán tử gán: =, ví dụ:
$a=$b=$c=42;
Các toán tử khác: ++, –, nếu biến là chuỗi chứa số thì sẽ tăng thêm một đơn vị, nếu chứa cả số và chữ thì sẽ tăng số lên một đơn vị, nếu chứa chữ không thì tăng chữ đó lên một mã trong bảng ASCII. Ví dụ như sau:
$a=”999″;
$a++;
print $a; # prints 1000, as you’d expect
$a=”c9″;
$a++;
print $a; # prints d0. 9+1=10, carry 1 to the c.
$a=”zzz”;
$a++;
print $a; # prints “aaaa”.
2.5) Angle Operator (<>)
Angle operator (<>), thi thoảng được gọi là diamond operator, chủ yếu được sử dụng cho đọc và viết các file; nó sẽ được giới thiệu đầy đủ ở Hourr 5, “Working with Files.” Mặc dù, bây giờ giới thiệu tóm tắt sẽ tạo một vài bài tập chú ý, và khi bạn bắt đầu Hour 5, toán tử sẽ có một chút quen thuộc đối với bạn.
Cho đến khi, bạn có thể dử dụng angle operator trong dạng rất đơn giản: < STDIN >. Dạng này chỉ ra cho Perl dòng này cần được nhập vào từ thiết bị nhập – thông thường là bàn phím. Công thức <STDIN> trả về dòng nhập từ bàn phím. Ví dụ:
print “What size is your shoe? “;
$size=<STDIN>;
print “Your shoe size is $size. Thank you!”;
Đoạn code trên, khi thực hiện (cho bạn kiểu 9.5 như kích cỡ dày của bạn), sẽ in ra màn hình dòng sau:
What is size is your shoe? 9.5
Your shoe size is 9.5
. Thank you!
Bạn sẽ thấy chữ .Thank you bị xuống dòng, bởi vì mặc định giá trị nhận về từ <STDIN> có một ký tự xuống dòng ở cuối, để xóa ký tự này bạn sử dụng hàm chomp. Đoạn code trên sẽ được viết lại như sau:
print “What size is your shoe?”;
$size=<STDIN>;
chomp $size;
print “Your shoe size is $size. Thank you!\n”;
Một số cách viết khác.
$a=$a+3; hoặc $a+=3;
$line.=”, at the end”; # “, at the end” is appended to $line
$y*=$x # same as $y=$y*$x
$r%=67; # Divide by 67, put remainder in $r
2.6) A Few Words on Strings and Numbers
Cho hầu hết các phần, Perl cho phép bạn được sử dụng những số và chuỗi có thể hoán đổi cho nhau; Đại diện đó là sử dụng quyết định rằng Perl tìm kiếm vị trí:
Nếu một số thứ tìm là số, Perl có thể sử dụng nó như là một số khi nó cần là một số:
$a=42; # A number
print $a+18; # displays 60.
$b=”50″;
print $b-10; # Displays 40.
Nếu một số thứ tìm là một số, khi Perl cần là một chuỗi, nó sử dụng chuỗi đại diện của số:
$a=42/3;
$a=$a . “Hello”; # Using a number like a string.
print $a # displays “14Hello”
Nếu một số thứ không tìm được như là một số, nhưng bạn sử dụng nó như là một số, Perl đơn giản sử dụng giá trị 0 vào vị trí đó:
$a=”Hello, World!”;
print $a+6; # displays the number 6
2.7) Bài tập: Hãy tính tiền lãi(accrued) theo công thức:
Trong đó:
Accrued – Lãi suất
Monthly interest – Lãi suất hàng năm
Number of deposits – Số tháng gửi tiền
Payment – Tổng số tiền gửi hàng tháng
Bài làm:
#!C:/xampp/perl/bin/perl.exe
print ‘Tong so tien gui ?\n’;
$pmt=<STDIN>;
chomp $pmt;
# Lai suat nam, vi du 15% thi nhap la .15
print ‘Lai suat nam ?\n’;
$interest=<STDIN>;
chomp $interest;
print ‘Tong so thang gui ?\n’;
$months=<STDIN>;
chomp $months;
$accrued=$pmt*(((1+$interest)**$months-1)/$interest);
print ‘Lai suat la: ‘.$accrued.’\n’;
(Jun – Theo Perl in 24 Hour)



Perl (viết tắt của Practical Extraction and Report Language – ngôn ngữ kết xuất và báo cáo thực dụng) được Larry Wall xây dựng từ năm 1987, với mục đích chính là tạo ra một ngôn ngữ lập trình có khả năng chắt lọc một lượng lớn dữ liệu và cho phép xử lí dữ liệu nhằm thu được kết quả cần tìm.