Saya berencana untuk mempelajari Perl 5 dan karena saya hanya menggunakan PHP sampai sekarang, saya ingin tahu sedikit tentang bagaimana bahasa berbeda satu sama lain.
Saat PHP dimulai sebagai satu set "Perl hacks", PHP jelas telah mengkloning beberapa fitur Perls.
Apa perbedaan utama dalam sintaks? Apakah benar bahwa dengan Perl Anda memiliki lebih banyak pilihan dan cara untuk mengekspresikan sesuatu?
Mengapa Perl tidak lagi sering digunakan untuk situs web dinamis? Apa yang membuat PHP semakin populer?
Jawaban:
Perl dan PHP lebih berbeda dari yang serupa. Mari kita pertimbangkan Perl 5, karena Perl 6 masih dalam pengembangan. Beberapa perbedaan, secara kasar dikelompokkan berdasarkan subjek:
=~
,!~
), quote-like (qw
,qx
& c.), Exponentiation (**
), string repetition (x
) dan range (..
and...
). PHP memiliki beberapa operator yang tidak dimiliki Perl, seperti operator penekan kesalahan (@
),instanceof
(meskipun Perl memilikiUniversal::isa
metode tersebut) danclone
.new
adalah operator. Di Perl, ini adalah nama konvensional dari subrutin pembuatan objek yang didefinisikan dalam paket, tidak ada yang istimewa sejauh menyangkut bahasa.Operator logika Perl mengembalikan argumen mereka, sementara mereka mengembalikan boolean dalam PHP. Mencoba:
dalam setiap bahasa. Di Perl, Anda bahkan dapat melakukan
$foo ||= 'default'
untuk menyetel $ foo ke nilai jika belum disetel. Cara terpendek untuk melakukan ini di PHP adalah$foo = isset($foo) ? $foo : 'default';
(Perbarui, di PHP 7.0+ Anda dapat melakukannya$foo = $foo ?? 'default'
)$foo
juga variabel yang berbeda dari@foo
atau%foo
.extract
fungsi.undefined
(lihat perldata ). Array PHP jarang; mengatur elemen tidak akan mengatur elemen intervening.array_slice
untuk mengekstrak potongan danarray_splice
menetapkan ke potongan.local
kata kunci.goto
fungsi tersebut.Perl meratakan daftar (lihat perlsub ); untuk struktur data yang tidak diratakan, gunakan referensi.
PHP tidak meratakan array.
BEGIN
,UNITCHECK
,CHECK
,INIT
danEND
) yang dijalankan. Tidak seperti PHPauto_prepend_file
danauto_append_file
, tidak ada batasan jumlah setiap jenis blok kode. Selain itu, blok kode ditentukan di dalam skrip, sedangkan opsi PHP ditetapkan di server dan file konfigurasi per direktori.$bam[-1]
adalah elemen terakhir dari array. Langganan negatif dalam PHP adalah langganan seperti yang lainnya.$obj->method(@args)
diterjemahkan ke sesuatu seperti(ref $obj)::method($obj, @args)
. Daftar tidak lengkap:$this
dalam metode. Perl meneruskan referensi ke objek sebagai argumen pertama ke metode.@ISA
variabel paket .//
adalah operator. Di PHP, ini adalah awal dari komentar satu baris.create_function
fungsi) dan tidak ada dukungan untuk penutupan.$@
(eval
bukantry
,die
bukanthrow
). TheKesalahanTry :: kecil mendukung modul pengecualian ketika Anda menemukan mereka dalam bahasa lain (serta beberapa modul lain yang tercantum dalam Kesalahan ini Lihat Juga bagian).PHP terinspirasi oleh Perl sama seperti Phantom of the Paradise terinspirasi oleh Phantom of the Opera , atau Strange Brew terinspirasi oleh Hamlet . Sebaiknya singkirkan perilaku spesifik PHP dari pikiran Anda saat mempelajari Perl, jika tidak, Anda akan tersandung.
Otak saya sakit sekarang, jadi saya akan berhenti.
sumber
@array = qw(a b c)
dan melakukannya$array[4] = 'e'
, konten array tidak persis('a', 'b', 'c', undef, 'e')
; mereka('a', 'b', 'c',
tidak ada ,'e')
. Artinya,[3]
slot tidak menahan penunjuk ke skalar yang undef; itu tidak memiliki apa-apa (danexists
operator menguji untuk ini). Perbedaan kecil, tetapi perbedaan. :)$foo
jika belum disetel adalahisset($foo) || $foo='default';
Ketika PHP muncul, semua orang terkesan dengan perbedaan utama dari Perl:
<?php ... ?>
saja. Tidak ada template yang membosankan.Seiring berjalannya waktu, semua orang mengetahui bahwa mereka tidak menguntungkan, hehe ...
sumber
Saya telah memperhatikan bahwa sebagian besar halaman PHP vs. Perl tampaknya berasal dari
sejenisnya, dan jarang membuat perbandingan yang masuk akal.
Dari segi sintaks, Anda akan menemukan PHP seringkali lebih mudah dipahami daripada Perl, terutama bila Anda memiliki sedikit pengalaman. Misalnya, memotong string spasi kosong di depan dan di belakangnya di PHP sangatlah mudah
Di Perl itu agak lebih samar
(Saya yakin ini sedikit lebih efisien daripada pengambilan dan penggantian satu baris, dan juga sedikit lebih dapat dimengerti.) Namun, meskipun PHP seringkali lebih mirip bahasa Inggris, kadang-kadang masih menunjukkan akarnya sebagai pembungkus untuk level C rendah, misalnya,
strpbrk
danstrspn
mungkin jarang digunakan, karena sebagian besar pengadu PHP menulis fungsi setara mereka sendiri untuk sesuatu yang terlalu esoteris, daripada menghabiskan waktu menjelajahi manual. Saya juga bertanya-tanya tentang para programmer yang bahasa Inggrisnya adalah bahasa kedua, karena setiap orang sejajar dengan Perl, harus mempelajarinya dari awal.Saya telah menyebutkan manualnya. PHP memiliki manual online yang bagus, dan sayangnya PHP membutuhkannya. Saya masih merujuknya dari waktu ke waktu untuk hal-hal yang seharusnya sederhana, seperti urutan parameter atau konvensi penamaan fungsi. Dengan Perl, Anda mungkin akan menemukan Anda mengacu pada manual banyak karena Anda memulai dan kemudian suatu hari Anda akan memiliki a-ha saat dan tidak perlu lagi. Setidaknya sampai Anda lebih mahir dan menyadari bahwa tidak hanya ada lebih dari satu cara, mungkin ada cara yang lebih baik, orang lain mungkin telah melakukannya dengan cara yang lebih baik, dan mungkin sebaiknya Anda mengunjungi CPAN saja.
Perl memang memiliki lebih banyak pilihan dan cara untuk mengekspresikan sesuatu. Ini belum tentu merupakan hal yang baik, meskipun memungkinkan kode menjadi lebih mudah dibaca jika digunakan dengan bijak dan setidaknya salah satu cara yang mungkin Anda kenal. Ada beberapa gaya dan idiom yang akan Anda temukan sendiri, dan saya sungguh-sungguh merekomendasikan membaca Perl Best Practices (lebih cepat daripada nanti), bersama dengan Perl Cookbook, Second Edition untuk mendapatkan informasi lebih cepat dalam memecahkan masalah umum.
Saya percaya alasan Perl lebih jarang digunakan di lingkungan shared hosting adalah karena secara historis dianggap kelambatan CGI dan keengganan host untuk menginstal mod_perl karena masalah keamanan dan konfigurasi telah membuat PHP menjadi pilihan yang lebih menarik. Siklus kemudian berlanjut, lebih banyak orang belajar menggunakan PHP karena lebih banyak host menawarkannya, dan lebih banyak host menawarkannya karena itulah yang ingin digunakan orang. Perbedaan kecepatan dan masalah keamanan yang diperdebatkan oleh FastCGI hari ini, dan dalam banyak kasus PHP juga kehabisan FastCGI, daripada membiarkannya di inti server web.
Apakah ini masalahnya atau ada alasan lain, PHP menjadi populer dan segudang aplikasi telah ditulis di dalamnya. Bagi sebagian besar orang yang hanya menginginkan situs web tingkat pemula dengan blog atau galeri foto sederhana, hanya PHP yang mereka butuhkan sehingga itulah yang dipromosikan oleh tuan rumah. Seharusnya tidak ada yang menghentikan Anda untuk menggunakan Perl (atau apapun yang Anda pilih) jika Anda mau.
Di tingkat perusahaan, saya ragu Anda akan menemukan terlalu banyak PHP dalam produksi (dan tolong, tidak ada yang menunjuk Facebook sebagai contoh tandingan, saya katakan tingkat perusahaan ).
sumber
$str =~ s/^\s+|\s+$//g;
Perl banyak digunakan untuk website, tidak kurang dari Python dan Ruby misalnya. Meskipun demikian, PHP lebih sering digunakan daripada yang lainnya. Menurut saya, faktor terpenting adalah kemudahan penerapan PHP dan kemudahan untuk memulainya.
Perbedaan sintaks terlalu banyak untuk diringkas di sini, tetapi pada umumnya benar bahwa sintaks memiliki lebih banyak cara untuk mengekspresikan diri (ini dikenal sebagai TIMTWOTDI, Ada Lebih dari Satu Cara Untuk Melakukannya).
sumber
Hal favorit saya tentang Perl adalah cara menangani array / daftar. Berikut adalah contoh bagaimana Anda akan membuat dan menggunakan fungsi Perl (atau "subrutin"), yang menggunakan ini untuk argumen:
Di PHP Anda dapat melakukan hal yang serupa
list()
, tetapi tidak persis sama; dalam daftar Perl dan array sebenarnya diperlakukan sama (biasanya). Anda juga dapat melakukan hal-hal seperti:Dan perbedaan lain yang HARUS Anda ketahui, adalah operator perbandingan numerik / string. Dalam Perl, jika Anda menggunakan
<
,>
,==
,!=
,<=>
, dan sebagainya, Perl mengkonversi kedua operan ke nomor. Jika Anda ingin mengkonversi sebagai string sebaliknya, Anda harus menggunakanlt
,gt
,eq
,ne
,cmp
(yang setara masing-masing operator yang tercantum sebelumnya). Contoh di mana ini benar-benar akan membuat Anda:sumber
Saya tidak perlu menambahkan apa pun pada jawaban luar biasa dari outis, saya hanya ingin menunjukkan jawaban untuk pertanyaan Anda:
Harap periksa dulu beberapa situs "Tren Pekerjaan" - dan Anda dapat membuat penilaian sendiri.
Seperti yang Anda lihat, perl masih menjadi yang terdepan - tetapi lebih disukai untuk aplikasi nyata, bukan untuk mainan. :)
sumber