Perl - Array

Array adalah variabel yang menyimpan daftar nilai skalar yang diurutkan. Variabel array diawali dengan tanda "at" (@). Untuk merujuk ke satu elemen array, Anda akan menggunakan tanda dolar ($) dengan nama variabel diikuti dengan indeks elemen dalam tanda kurung siku.

Berikut adalah contoh sederhana menggunakan variabel array -

#!/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";

Di sini kita telah menggunakan tanda escape (\) sebelum tanda $ hanya untuk mencetaknya. Perl lain akan memahaminya sebagai variabel dan akan mencetak nilainya. Saat dijalankan, ini akan menghasilkan hasil sebagai berikut -

$ages[0] = 25
$ages[1] = 30
$ages[2] = 40
$names[0] = John Paul
$names[1] = Lisa
$names[2] = Kumar

Di Perl, istilah List dan Array sering digunakan seolah-olah keduanya dapat dipertukarkan. Tetapi daftarnya adalah datanya, dan arraynya adalah variabelnya.

Pembuatan Array

Variabel array diawali dengan tanda @ dan diisi menggunakan salah satu tanda kurung atau operator qw. Misalnya -

@array = (1, 2, 'Hello');
@array = qw/This is an array/;

Baris kedua menggunakan operator qw //, yang mengembalikan daftar string, memisahkan string yang dipisahkan dengan spasi. Dalam contoh ini, ini mengarah ke array empat elemen; elemen pertama adalah 'ini' dan terakhir (keempat) adalah 'array'. Ini berarti Anda dapat menggunakan baris yang berbeda sebagai berikut -

@days = qw/Monday
Tuesday
...
Sunday/;

Anda juga dapat mengisi larik dengan menetapkan setiap nilai secara individual sebagai berikut -

$array[0] = 'Monday';
...
$array[6] = 'Sunday';

Mengakses Elemen Array

Saat mengakses elemen individu dari larik, Anda harus mengawali variabel dengan tanda dolar ($) dan kemudian menambahkan indeks elemen dalam tanda kurung siku setelah nama variabel. Misalnya -

#!/usr/bin/perl

@days = qw/Mon Tue Wed Thu Fri Sat Sun/;

print "$days[0]\n";
print "$days[1]\n";
print "$days[2]\n";
print "$days[6]\n";
print "$days[-1]\n";
print "$days[-7]\n";

Ini akan menghasilkan hasil sebagai berikut -

Mon
Tue
Wed
Sun
Sun
Mon

Indeks array dimulai dari nol, jadi untuk mengakses elemen pertama Anda perlu memberi 0 sebagai indeks. Anda juga dapat memberikan indeks negatif, dalam hal ini Anda memilih elemen dari akhir, bukan awal, dari larik. Ini berarti sebagai berikut -

print $days[-1]; # outputs Sun
print $days[-7]; # outputs Mon

Array Nomor Urutan

Perl menawarkan jalan pintas untuk angka dan huruf berurutan. Daripada mengetik setiap elemen saat menghitung sampai 100 misalnya, kita dapat melakukan sesuatu seperti berikut -

#!/usr/bin/perl

@var_10 = (1..10);
@var_20 = (10..20);
@var_abc = (a..z);

print "@var_10\n";   # Prints number from 1 to 10
print "@var_20\n";   # Prints number from 10 to 20
print "@var_abc\n";  # Prints number from a to z

Di sini titik ganda (..) dipanggil range operator. Ini akan menghasilkan hasil sebagai berikut -

1 2 3 4 5 6 7 8 9 10
10 11 12 13 14 15 16 17 18 19 20
a b c d e f g h i j k l m n o p q r s t u v w x y z

Ukuran Array

Ukuran array dapat ditentukan menggunakan konteks skalar pada array - nilai yang dikembalikan adalah jumlah elemen dalam array -

@array = (1,2,3);
print "Size: ",scalar @array,"\n";

Nilai yang dikembalikan akan selalu menjadi ukuran fisik array, bukan jumlah elemen yang valid. Anda dapat mendemonstrasikan ini, dan perbedaan antara skalar @array dan $ # array, menggunakan fragmen ini adalah sebagai berikut -

#!/usr/bin/perl

@array = (1,2,3);
$array[50] = 4;

$size = @array;
$max_index = $#array;

print "Size:  $size\n";
print "Max Index: $max_index\n";

Ini akan menghasilkan hasil sebagai berikut -

Size: 51
Max Index: 50

Hanya ada empat elemen dalam larik yang berisi informasi, tetapi larik memiliki panjang 51 elemen, dengan indeks tertinggi 50.

Menambah dan Menghapus Elemen di Array

Perl menyediakan sejumlah fungsi yang berguna untuk menambah dan menghapus elemen dalam sebuah array. Anda mungkin memiliki pertanyaan apa itu fungsi? Sejauh ini Anda telah menggunakanprintberfungsi untuk mencetak berbagai nilai. Demikian pula terdapat berbagai fungsi lain atau kadang disebut sub-rutinitas, yang dapat digunakan untuk berbagai fungsi lainnya.

Sr.No. Jenis & Deskripsi
1

push @ARRAY, LIST

Mendorong nilai daftar ke akhir larik.

2

pop @ARRAY

Muncul dan mengembalikan nilai terakhir dari array.

3

shift @ARRAY

Menggeser nilai pertama dari larik dan mengembalikannya, memperpendek larik sebesar 1 dan memindahkan semuanya ke bawah.

4

unshift @ARRAY, LIST

Menambahkan daftar ke depan larik, dan mengembalikan jumlah elemen di larik baru.

#!/usr/bin/perl

# create a simple array
@coins = ("Quarter","Dime","Nickel");
print "1. \@coins  = @coins\n";

# add one element at the end of the array
push(@coins, "Penny");
print "2. \@coins  = @coins\n";

# add one element at the beginning of the array
unshift(@coins, "Dollar");
print "3. \@coins  = @coins\n";

# remove one element from the last of the array.
pop(@coins);
print "4. \@coins  = @coins\n";

# remove one element from the beginning of the array.
shift(@coins);
print "5. \@coins  = @coins\n";

Ini akan menghasilkan hasil sebagai berikut -

1. @coins = Quarter Dime Nickel
2. @coins = Quarter Dime Nickel Penny
3. @coins = Dollar Quarter Dime Nickel Penny
4. @coins = Dollar Quarter Dime Nickel
5. @coins = Quarter Dime Nickel

Mengiris Elemen Array

Anda juga dapat mengekstrak "irisan" dari larik - yaitu, Anda dapat memilih lebih dari satu item dari larik untuk menghasilkan larik lain.

#!/usr/bin/perl

@days = qw/Mon Tue Wed Thu Fri Sat Sun/;

@weekdays = @days[3,4,5];

print "@weekdays\n";

Ini akan menghasilkan hasil sebagai berikut -

Thu Fri Sat

Spesifikasi irisan harus memiliki daftar indeks yang valid, baik positif maupun negatif, masing-masing dipisahkan dengan koma. Untuk kecepatan, Anda juga bisa menggunakan.. operator jangkauan -

#!/usr/bin/perl

@days = qw/Mon Tue Wed Thu Fri Sat Sun/;

@weekdays = @days[3..5];

print "@weekdays\n";

Ini akan menghasilkan hasil sebagai berikut -

Thu Fri Sat

Mengganti Elemen Array

Sekarang kita akan memperkenalkan satu fungsi lagi yang disebut splice(), yang memiliki sintaks berikut -

splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ]

Fungsi ini akan menghapus elemen @ARRAY yang ditentukan oleh OFFSET dan LENGTH, dan menggantinya dengan LIST, jika ditentukan. Akhirnya, ini mengembalikan elemen yang dihapus dari array. Berikut contohnya -

#!/usr/bin/perl

@nums = (1..20);
print "Before - @nums\n";

splice(@nums, 5, 5, 21..25); 
print "After - @nums\n";

Ini akan menghasilkan hasil sebagai berikut -

Before - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
After - 1 2 3 4 5 21 22 23 24 25 11 12 13 14 15 16 17 18 19 20

Di sini, penggantian sebenarnya dimulai dengan angka ke-6 setelah itu lima elemen kemudian diganti dari 6 menjadi 10 dengan angka 21, 22, 23, 24 dan 25.

Ubah String menjadi Array

Mari kita lihat satu fungsi lagi yang disebut split(), yang memiliki sintaks berikut -

split [ PATTERN [ , EXPR [ , LIMIT ] ] ]

Fungsi ini membagi string menjadi array string, dan mengembalikannya. Jika LIMIT ditentukan, bagi paling banyak menjadi jumlah bidang itu. Jika PATTERN dihilangkan, pisahkan di spasi. Berikut contohnya -

#!/usr/bin/perl

# define Strings
$var_string = "Rain-Drops-On-Roses-And-Whiskers-On-Kittens";
$var_names = "Larry,David,Roger,Ken,Michael,Tom";

# transform above strings into arrays.
@string = split('-', $var_string);
@names  = split(',', $var_names);

print "$string[3]\n";  # This will print Roses
print "$names[4]\n";   # This will print Michael

Ini akan menghasilkan hasil sebagai berikut -

Roses
Michael

Ubah Array menjadi String

Kita bisa menggunakan join()berfungsi untuk menggabungkan kembali elemen array dan membentuk satu string skalar panjang. Fungsi ini memiliki sintaks berikut -

join EXPR, LIST

Fungsi ini menggabungkan string terpisah dari LIST menjadi satu string dengan bidang yang dipisahkan oleh nilai EXPR, dan mengembalikan string tersebut. Berikut contohnya -

#!/usr/bin/perl

# define Strings
$var_string = "Rain-Drops-On-Roses-And-Whiskers-On-Kittens";
$var_names = "Larry,David,Roger,Ken,Michael,Tom";

# transform above strings into arrays.
@string = split('-', $var_string);
@names  = split(',', $var_names);

$string1 = join( '-', @string );
$string2 = join( ',', @names );

print "$string1\n";
print "$string2\n";

Ini akan menghasilkan hasil sebagai berikut -

Rain-Drops-On-Roses-And-Whiskers-On-Kittens
Larry,David,Roger,Ken,Michael,Tom

Menyortir Array

Itu sort()fungsi mengurutkan setiap elemen array sesuai dengan standar Numerik ASCII. Fungsi ini memiliki sintaks berikut -

sort [ SUBROUTINE ] LIST

Fungsi ini mengurutkan LIST dan mengembalikan nilai array yang diurutkan. Jika SUBROUTINE ditentukan maka logika yang ditentukan di dalam SUBTROUTINE diterapkan saat menyortir elemen.

#!/usr/bin/perl

# define an array
@foods = qw(pizza steak chicken burgers);
print "Before: @foods\n";

# sort this array
@foods = sort(@foods);
print "After: @foods\n";

Ini akan menghasilkan hasil sebagai berikut -

Before: pizza steak chicken burgers
After: burgers chicken pizza steak

Harap dicatat bahwa pengurutan dilakukan berdasarkan nilai Numerik ASCII dari kata-kata tersebut. Jadi opsi terbaik adalah pertama-tama mengubah setiap elemen array menjadi huruf kecil dan kemudian melakukan fungsi sortir.

$ [Variabel Khusus

Sejauh ini Anda telah melihat variabel sederhana yang kami tentukan dalam program kami dan menggunakannya untuk menyimpan dan mencetak nilai skalar dan array. Perl menyediakan banyak variabel khusus, yang memiliki arti yang telah ditentukan sebelumnya.

Kami memiliki variabel khusus, yang ditulis sebagai $[. Variabel khusus ini adalah skalar yang berisi indeks pertama dari semua larik. Karena array Perl memiliki pengindeksan berbasis nol, $ [akan hampir selalu 0. Tetapi jika Anda menyetel $ [menjadi 1 maka semua array Anda akan menggunakan pengindeksan berbasis-on. Disarankan untuk tidak menggunakan pengindeksan selain nol. Namun, mari kita ambil satu contoh untuk menunjukkan penggunaan $ [variabel -

#!/usr/bin/perl

# define an array
@foods = qw(pizza steak chicken burgers);
print "Foods: @foods\n";

# Let's reset first index of all the arrays.
$[ = 1;

print "Food at \@foods[1]: $foods[1]\n";
print "Food at \@foods[2]: $foods[2]\n";

Ini akan menghasilkan hasil sebagai berikut -

Foods: pizza steak chicken burgers
Food at @foods[1]: pizza
Food at @foods[2]: steak

Menggabungkan Array

Karena array hanyalah urutan nilai yang dipisahkan koma, Anda dapat menggabungkannya seperti yang ditunjukkan di bawah ini -

#!/usr/bin/perl

@numbers = (1,3,(4,5,6));

print "numbers = @numbers\n";

Ini akan menghasilkan hasil sebagai berikut -

numbers = 1 3 4 5 6

Array yang disematkan hanya menjadi bagian dari array utama seperti yang ditunjukkan di bawah ini -

#!/usr/bin/perl

@odd = (1,3,5);
@even = (2, 4, 6);

@numbers = (@odd, @even);

print "numbers = @numbers\n";

Ini akan menghasilkan hasil sebagai berikut -

numbers = 1 3 5 2 4 6

Memilih Elemen dari Daftar

Notasi daftar identik dengan array. Anda dapat mengekstrak elemen dari array dengan menambahkan tanda kurung siku ke daftar dan memberikan satu atau lebih indeks -

#!/usr/bin/perl

$var = (5,4,3,2,1)[4];

print "value of var = $var\n"

Ini akan menghasilkan hasil sebagai berikut -

value of var = 1

Demikian pula, kita dapat mengekstrak irisan, meskipun tanpa persyaratan karakter @ di depan -

#!/usr/bin/perl

@list = (5,4,3,2,1)[1..3];

print "Value of list = @list\n";

Ini akan menghasilkan hasil sebagai berikut -

Value of list = 4 3 2