Xin chào các bạn, trong bất kỳ ngôn ngữ lập trình nào thì mảng luôn là phần quan trọng nhất. Do đó, hôm nay chúng ta sẽ tìm hiểu về Arrays và Hashes cũng như cách thức sử dụng trong ngôn ngữ Perl.
Arrays là gì?
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. Mảng được khai báo với ký hiệu
@ ở đằng trước biến mảng và bạn sử dụng ký hiệu
$ cùng với cặp
[ ] để xác định các phần tử trong biến mảng.
#!/usr/bin/perl
@oddNumber = (1, 3, 5, 7, 9);
@fullName = ("Nguyen", "Minh", "Giau");
print "\$oddNumber[0] = $oddNumber[0]\n";
print "\$oddNumber[1] = $oddNumber[1]\n";
print "\$oddNumber[2] = $oddNumber[2]\n";
print "\$oddNumber[3] = $oddNumber[3]\n";
print "\$oddNumber[4] = $oddNumber[4]\n";
print "\@fullName = @fullName\n";
Ở đây mình sử dụng ký hiệu
\ trước ký hiệu
$ dùng để
escape ký hiệu
$ (nói đơn giản là mình chỉ muốn in nó ra màn hình thôi!). Các bạn chạy đoạn code lên bằng lệnh
perl "tên-file".pl và sẽ có kết quả như hình dưới đây:
|
In ra mảng các phần tử trong "oddNumber" và "fullName" |
Ngoài ra, chúng ta cũng có thể khai báo mảng bằng cách sử dụng toán tử
qw/"giá-trị"/ hoặc
qw("giá-trị"). Nó sẽ vẫn trả về một danh sách các chuỗi được phân biệt bằng khoảng trắng.
#!/usr/bin/perl
@game = qw/lol fifa dota/;
print "\@game = @game\n";
|
Mảng vẫn in ra các phần tử với khoảng trắng khi sử dụng "qw/ /" |
Đối với mảng trong ngôn ngữ
perl, các chỉ số của phần tử trong mảng có thể
+ hoặc
- nhưng phần tử đầu tiên luôn bắt đầu bằng
0. Nếu chỉ số của phần tử trong mảng là
- thì phần tử đầu tiên sẽ là phần tử cuối. Các bạn có thể xem đoạn code dưới đây để hiểu được qui luật.
#!/usr/bin/perl
@club = qw/Club FPT Information Assurance/;
print "\$club[0] = $club[0]\n";
print "\$club[1] = $club[1]\n";
print "\$club[2] = $club[2]\n";
print "\$club[3] = $club[3]\n";
print "\$club[-1] = $club[-1]\n";
print "\$club[-2] = $club[-2]\n";
print "\$club[-3] = $club[-3]\n";
print "\$club[-4] = $club[-4]\n";
Do phần tử đầu tiên đã nằm ở vị trí
0 nên phần tử với chỉ số
- sẽ bắt đầu bằng
-1 và giá trị sẽ là phần tử cuối của chỉ số
+.
|
Các phần tử chỉ số "-" sẽ được in ngược lại |
Ngoài ra,
arrays còn có các thành phần khác như
sequential number, transform, sorting,... mà mình sẽ đề cập toàn bộ gói gọn trong đoạn code dưới đây.
#!/usr/bin/perl
# [+]Sequential number
@number = (10..20);
@alphabet = (a..h);
print "@number\n"; # In ra các số từ 10 đến 15
print "@alphabet\n"; # In ra các chữ cái từ a đến h
# [+]Transform
$club = "Club-FPT-Information-Assurance";
$categories = "Coding,Hacking,Hardware,Network,OS,Software";
# Để chuyển đổi từ chuỗi sang mảng, chúng ta sử dụng hàm "split"
@array1 = split('-', $club);
@array2 = split(',', $categories);
# Để chuyển đổi từ mảng sang chuỗi, chúng ta sử dụng hàm "join"
$string1 = join( '-', @array1 );
$string2 = join( ',', @array2 );
print "$array1\n";
print "$array2\n";
print "$string1\n";
print "$string2\n";
# [+]Sorting
@fruits = qw(banana, lemon, orange, grape, mango, watermelon, strawberry);
print "Before sorting: @fruits\n";
# Sắp xếp mảng với hàm "sort"
@fruits = sort(@fruits);
print "After sorting: @fruits\n";
|
Các thành phần khác trong Arrays |
Hashes là gì?
Mảng băm là một tập hợp các cặp khóa - giá trị (key - value). Mảng băm được khai báo bởi ký hiệu
% ở đằng trước biến mảng băm và bạn sử dụng ký hiệu
$ cùng với cặp
{ } để xác định các phần tử trong biến mảng.
#!/usr/bin/perl
%user = ('Van A', 23, 'Van B', 31, 'Van C', 18);
print "\$data{'Van A'} = $data{'Van A'}\n";
print "\$data{'Van B'} = $data{'Van B'}\n";
print "\$data{'Van C'} = $data{'Van C'}\n";
|
In ra các phần tử trong mảng băm "user" |
Ngoài kiểu trên ra, mảng băm còn có kiểu khai báo khác bằng cách sử dụng cú pháp
khoá => giá trị (key => value). Cũng giống với mảng, mảng băm cũng sử dụng chỉ số
- giống với cách thức bên mảng.
#!/usr/bin/perl
%user = ('Van A' => 23, 'Van B' => 31, 'Van C' => 18);
print "\$data{'Van A'} = $data{'Van A'}\n";
print "\$data{'Van B'} = $data{'Van B'}\n";
print "\$data{'Van C'} = $data{'Van C'}\n";
Trong mảng băm, chúng ta có thể xoá phần tử bằng cách sử dụng hàm
delete và kiểm tra kích thước của mảng băm bằng biến
keys.
#!/usr/bin/perl
%user = ('Van A', 23, 'Van B', 31, 'Van C', 18);
delete $user{'Van A'};
@keys = keys %user;
$size = @keys;
print "Size: is $size\n";
|
Kích thước mảng băm sau khi xoá phần tử |
Tóm tắt
Chúng ta đã được tìm hiểu về Arrays và Hashes, cách khai báo và các hàm được sử dụng như thế nào trong ngôn ngữ Perl. Cám ơn các bạn đã xem bài viết!