Subrutin Perl juga merupakan fungsi yang ditentukan pengguna.
Subrutin Perl adalah potongan kode terpisah yang melakukan tugas tertentu, yang dapat mengurangi kode berulang dan membuat program lebih mudah dibaca.
Subrutin Perl dapat muncul di mana saja dalam program, dan format sintaksisnya adalah sebagai berikut:
sub subrutin{ pernyataan;}
Format sintaks untuk memanggil subrutin:
subrutin(daftar parameter);
Pada versi di bawah Perl 5.0, metode pemanggilan subrutin adalah sebagai berikut:
&subrutin(daftar parameter);
Di versi baru, meskipun metode panggilan ini juga didukung, penggunaannya tidak disarankan.
Selanjutnya mari kita lihat contoh sederhana:
Dengan mengeksekusi program di atas, hasil keluarannya adalah:
Halo Dunia!
Subprogram Perl dapat menerima banyak parameter seperti pemrograman lainnya. Parameter subprogram ditandai dengan array khusus @_.
Oleh karena itu, parameter pertama subrutin adalah $_[0], parameter kedua adalah $_[1], dan seterusnya.
Terlepas dari apakah parameternya skalar atau array, ketika pengguna meneruskan parameter ke subrutin, Perl memanggilnya dengan referensi secara default.
Dengan mengeksekusi program di atas, hasil keluarannya adalah:
Parameter yang diteruskan adalah: 10 20 30 Nilai parameter pertama adalah: 10 Nilai rata-rata parameter yang diteruskan adalah: 20
Pengguna dapat mengubah nilai parameter aktual terkait dengan mengubah nilai dalam array @_.
Karena variabel @_ adalah array, maka dapat diteruskan daftar ke dalam subrutin.
Namun jika kita perlu memasukkan parameter skalar dan array, kita perlu meletakkan daftarnya pada parameter terakhir, seperti yang ditunjukkan di bawah ini:
Program di atas menggabungkan skalar dan array, dan outputnya adalah:
Daftarnya adalah: 10 1 2 3 4
Kita dapat meneruskan beberapa array dan hash ke subrutin, tetapi ketika meneruskan beberapa array dan hash, identitas independen akan hilang. Jadi kita perlu menggunakan referensi (akan diperkenalkan pada bab berikutnya) untuk lulus.
Ketika tabel hash diteruskan ke subrutin, tabel tersebut disalin ke @_ dan tabel hash diperluas menjadi daftar kombinasi kunci/nilai.
Hasil output dari eksekusi program di atas adalah:
umur: 3 nama: codecto
Subrutin dapat mengembalikan nilai fungsi menggunakan pernyataan return seperti pada bahasa pemrograman lainnya.
Jika tidak ada pernyataan return yang digunakan, baris terakhir subrutin digunakan sebagai nilai kembalian.
Hasil output dari eksekusi program di atas adalah:
3
Kita dapat mengembalikan skalar, array, dan hash dalam subrutin, tetapi ketika mengembalikan beberapa array dan hash, identitas independen akan hilang. Jadi kita perlu menggunakan referensi (diperkenalkan pada bab berikutnya) untuk mengembalikan beberapa array dan fungsi.
Secara default, semua variabel di Perl adalah variabel global, yang berarti variabel tersebut dapat dipanggil di mana saja dalam program.
Jika kita perlu menyetel variabel pribadi, kita dapat menggunakan operator saya untuk menyetelnya.
Operator my digunakan untuk membuat variabel dengan cakupan leksikal. Variabel yang dibuat melalui my bertahan dari awal deklarasi hingga akhir dari cakupan tertutup.
Cakupan tertutup mengacu pada area dalam sepasang kurung kurawal, file, atau string if, while, for, foreach, atau eval.
Contoh berikut menunjukkan cara mendeklarasikan satu atau lebih variabel privat:
sub somefunc { my $variable; # $variable tidak terlihat di luar metode somefunc() my ($another, @an_array, %a_hash); # Deklarasikan beberapa variabel secara bersamaan}
Hasil keluaran dari eksekusi program di atas adalah:
String di dalam fungsi: Halo, Codercto! String di luar fungsi: Halo, Dunia!
Kita dapat menggunakan lokal untuk memberikan nilai sementara untuk variabel global dan mengembalikan nilai asli setelah keluar dari cakupan.
Variabel yang didefinisikan oleh lokal tidak ada di program utama, tetapi ada di subprogram dan subprogram yang disebut subprogram. Anda dapat menetapkan nilai saat mendefinisikannya, seperti:
Hasil output dari eksekusi program di atas adalah:
Nilai string di dalam fungsi PrintMe: Halo, Codercto!PrintCodercto Nilai string di dalam fungsi: Halo, Codercto!PrintHello Nilai string di dalam fungsi: Halo, Dunia! Nilai string di luar fungsi: Halo, Dunia!
Fungsi operator state mirip dengan pengubah statis di C. Kata kunci state membuat variabel lokal tetap ada.
state juga merupakan variabel leksikal, sehingga hanya valid dalam lingkup leksikal di mana variabel tersebut didefinisikan.
Hasil keluaran dari eksekusi program di atas adalah:
Nilai counternya adalah : 0 counter Nilainya : 1 counter Nilainya : 2 counter Nilainya : 3 counter Nilainya : 4
Catatan 1: negara hanya dapat membuat variabel yang cakupan tertutupnya berada dalam subrutin.
Catatan 2: status diperkenalkan dari Perl 5.9.4, jadi penggunaan harus ditambahkan sebelum digunakan.
Catatan 3: negara dapat mendeklarasikan skalar, array, dan hash. Namun array dan hash tidak dapat diinisialisasi ketika dideklarasikan (setidaknya tidak di Perl 5.14).
Selama proses panggilan subrutin, berbagai jenis nilai akan dikembalikan sesuai dengan konteksnya. Misalnya, subrutin localtime() berikut mengembalikan string dalam konteks skalar dan daftar dalam konteks daftar:
Hasil keluaran dari eksekusi program di atas adalah:
Minggu 12 Juni 15:58:09 20162106-6-12 15:58:9