lidah mutiara. Peranan konteks untuk pembolehubah jenis skalar dan vektor. Membaca dan menulis blok data

Bahasa pengaturcaraan Perl telah dicipta oleh Larry Wall pada tahun 1987 semasa beliau bekerja sebagai pengaturcara sistem di syarikat Amerika Unisys. Matlamat Larry dalam membangunkan bahasa pengaturcaraan baharu ditunjukkan dalam namanya - PERL, yang kemudiannya bermaksud Pengekstrakan Praktikal dan Bahasa Laporan, iaitu, "bahasa praktikal untuk mengekstrak 'data' dan 'mencipta' laporan."

Salah satu legenda tentang asal usul Perl mengatakan bahawa pada masa itu sudah ada bahasa dengan nama itu, jadi Larry memendekkan nama itu dengan satu huruf tanpa mengubah sebutan. Ironinya, hari ini tiada siapa yang mengingati bahasa itu kecuali ahli sejarah, tetapi Perl dikenali di seluruh dunia.

Walaupun, mengikut versi lain, Larry menamakan bahasa yang diciptanya sempena tunangnya.


Larry Wall

Perkembangan Perl dipengaruhi oleh bahasa Ada, Basic, Fortran, Lisp, Pascal dan, tentu saja, bahasa C Perl menyerap trend yang berbeza Sains Komputer: pengaturcaraan prosedural, modular, berfungsi dan berorientasikan objek, pemprosesan teks makro, dan sebagai tambahan - budaya OS Unix, dengan set perintah dan utiliti yang kaya, seni bina yang difikirkan dengan baik dan pendekatan yang bersatu untuk pembentangan data.

Warisan Unix

Persekitaran Unix di mana ia dibangunkan mempunyai pengaruh yang menentukan ke atas pembangunan bahasa Perl. Sejak awal lagi, sistem pengendalian ini dicipta oleh sekumpulan kecil pengaturcara untuk diri mereka sendiri. Oleh itu, prinsip yang tertanam di dalamnya tertumpu pada kemudahan penggunaan sehari-hari oleh manusia: segala-galanya dilakukan secara fungsional yang mungkin, ringkas, dan seragam. Sebagai contoh, kebanyakan tetapan sistem disimpan dalam bentuk teks biasa, supaya ia boleh dibaca dan diperbetulkan oleh seseorang yang bersenjatakan editor teks mudah.

Bagi mereka yang biasa dengan sistem pengendalian Unix, bahan ini bukanlah perkara baharu. Tetapi bagi kebanyakan pengaturcara MS-DOS dan Windows, adalah penting untuk membiasakan diri dengan prinsip pengaturcaraan berasaskan perisian, yang berasal dan berkembang dengan sistem pengendalian Unix. Mereka menulis buku yang menarik tentang mereka pengaturcara terkenal Brian W. Kernighan dan Philip Plauger. Berikut adalah perkara utama pendekatan ini.

Untuk menyelesaikan masalah tertentu, program kecil dibangunkan, setiap satunya melaksanakan satu fungsi masalah yang sedang diselesaikan.

Masalahnya diselesaikan dengan interaksi program kecil melalui pemprosesan data berurutan daripada setiap daripada mereka.

Apabila membangunkan program kecil ini, anda harus memberi tumpuan kepada penggunaan bebas maksimum mereka supaya ia boleh digunakan untuk menyelesaikan masalah lain. Oleh itu, alat (IS) secara beransur-ansur dicipta untuk kegunaan sejagat selanjutnya.

Kebanyakan alat dibangunkan sebagai program penapis yang membaca aliran data daripada input standard dan menulis data yang diproses ke output standard.

Integrasi alat ke dalam aplikasi dilakukan menggunakan bahasa arahan OS: Ubah hala I/O, penciptaan saluran paip perisian (mengarahkan aliran output satu program ke input yang lain).

Format utama data yang disimpan untuk alatan ialah fail teks, yang sama-sama sesuai untuk pemprosesan perisian dan membacanya oleh seseorang.

Untuk pemprosesan yang cekap kurang berstruktur maklumat teks memohon ungkapan biasa.

Faktor yang menguntungkan

Bahasa itu cepat tersebar di kalangan pengguna Usenet. Walaupun sistem pengendalian Unix (OS) yang Perl dicipta sudah mempunyai banyak dan pelbagai alat untuk memproses maklumat teks (awk, csh, grep, sed dan lain-lain), bahasa baharu itu jatuh cinta dengan sejumlah besar sistem pentadbir dan pengaturcara. Ia adalah mudah untuk dipelajari dan digunakan: sintaks adalah serupa dengan C, program Perl tidak perlu disusun terlebih dahulu, dan kod sumber mudah diubah suai. Dan yang paling penting, ia benar-benar bahasa yang sangat praktikal: dengan bantuannya, kebanyakan masalah harian dapat diselesaikan dengan mudah - daripada yang paling mudah kepada yang sangat kompleks.

Secara aktif menggunakan bahasa Perl, pengaturcara dari negara berbeza menghantar cadangan Larry Wall untuk menambah ciri baharu atau menambah baik ciri sedia ada. Secara beransur-ansur, Perl berkembang daripada alat pemprosesan perkataan Unix menjadi sistem pengaturcaraan tujuan am yang berkuasa. Pada pertengahan 1990-an, apabila Internet berkembang, Perl menjadi alat kegemaran untuk juruweb untuk mencipta laman web dinamik dan pengaturcaraan Internet.

Kerana keupayaan pemprosesan teks terbina dalam yang berkuasa, Perl digunakan secara meluas untuk memproses maklumat dalam format HTML dan XML.

Perl telah menjadi komponen penting bagi mana-mana pakej OS Unix (contohnya, FreeBSD, Linux atau Solaris). Di samping itu, sehingga kini Perl telah dilaksanakan untuk hampir semua platform perkakasan moden (superkomputer, RISC, Macintosh, PC, komputer pegang tangan) dan sistem pengendalian (AIX, Linux, MacOS, MS-DOS, NetWare, OS/2, QNX, Solaris , Windows, VMS dan sebagainya).

Ini membolehkan anda mengalihkan program Perl popular dengan mudah daripada satu persekitaran operasi kepada yang lain.

Tidak dinafikan, penggunaannya yang meluas telah dipermudahkan oleh fakta bahawa ia diedarkan secara percuma di bawah syarat salah satu lesen: sama ada GNU GeneralPublic License (GPL) atau Artistic License - pilihan anda. Tetapi perkara utama ialah ia mempunyai semua alat untuk membantu profesional dan pengaturcara yang tidak berpengalaman dengan sempurna apabila mereka perlu menyelesaikan pelbagai masalah sistem dan aplikasi dengan cepat - daripada yang paling mudah kepada yang paling kompleks. Hasilnya, Perl menjadi salah satu projek pergerakan yang paling berjaya. sumber terbuka(sumber terbuka) - bersama-sama dengan Apache, Linux, PHP dan Python.

Bahasa pengaturcaraan yang luar biasa

Prinsip reka bentuk Perl sangat berbeza daripada yang digunakan dalam pengaturcaraan sebelum ini. Sifat inovatif bahasa dikaitkan dengan ciri-ciri yang unik personaliti pengarang, Larry Wall, dan minatnya yang pelbagai.

Semasa belajar di universiti, Larry Wall menerima pendidikan linguistik. Selain itu, beliau terlibat dalam pengaturcaraan dan bekerja di universiti pusat komputer.

Mungkin kelebihan utama Larry sebagai pengarang Perl ialah dia berjaya mencipta bahasa yang mengambil kira sifat dan prinsip bahasa semula jadi: polisemi situasional pembinaan, redundansi yang munasabah (dan disebabkan kepelbagaian gaya ini), kebolehsuaian maksimum kepada tahap yang berbeza. pengetahuan penutur asli, fleksibiliti dan ekspresi cara sintaksis. Semua ini memberikan rasa kreatif yang istimewa kepada proses "menulis" dalam bahasa ini.

Mereka yang menulis tentang bahasa Perl tanpa disedari menggunakan istilah "idiom", "metafora", "sinonim", "konteks", dll., biasanya digunakan untuk bahasa semula jadi. Dan Larry Wall sendiri, apabila menerangkan bahasa Perl, digunakan secara meluas istilah linguistik: kata nama, kata kerja, ayat, tunggal dan jamak, kata ganti.

Ahli bahasa cemerlang B.L. Whorf menyatakan, "Bahasa membentuk cara berfikir kita dan menentukan perkara yang boleh kita fikirkan." Idea yang sama disahkan oleh J. Bentley dalam buku "Pearls of Programmers' Creativity," yang menerangkan kes apabila ciri bahasa pengaturcaraan APL yang mendorong pembangun untuk menghasilkan penyelesaian asal kepada masalah dengan tatasusunan. Dalam pengertian ini, Perl, sebagai bahasa untuk merealisasikan rancangan pengaturcara, tidak membelenggu imaginasi pembangun, memberinya kebebasan bersuara maksimum, dan kadang-kadang menggesa penyelesaian bukan standard.

Perkara berikut disebut sebagai kelemahan bahasa:

Prinsip linguistik Perl

Bahasa manusia cenderung menggunakan set konstruk yang terhad untuk menyatakan makna yang berbeza dan penggunaan semula mereka dalam konteks yang berbeza. Selaras dengan prinsip ini, dalam Perl, konstruk bahasa yang sama mempunyai makna yang berbeza, dan pemahaman mereka yang tidak jelas ditentukan oleh konteks penggunaan.

Prinsip konteks berkait rapat dengan yang sebelumnya. Konteks digunakan dalam bahasa semula jadi untuk mentafsir makna ungkapan dengan betul. Mengikut prinsip ini, dalam Perl, sebagai contoh, banyak fungsi mengembalikan nilai tunggal atau senarai bergantung pada konteks panggilan: sama ada sintaks ungkapan memerlukan nilai tunggal atau berbilang.

Prinsip garis bawah semantik dalam bahasa semula jadi berfungsi untuk menarik perhatian kepada bahagian penting pernyataan. Dalam kes ini, bahagian yang diserlahkan biasanya diletakkan pada permulaan ayat. Dalam Perl, pengaturcara boleh menggunakan prinsip ini untuk menekankan makna dengan memilih ayat mudah dengan pengubah suai atau pembinaan bersyarat, Sebagai contoh:

$kami->hendaklah(melakukan($itu)) jika $anda->mahu($itu); # atau
jika $anda->mahu($itu) ( $kita->hendaklah(lakukan($itu)) )

Prinsip kebebasan dalam bahasa semula jadi menunjukkan bahawa sentiasa terdapat beberapa pilihan untuk menyatakan pemikiran yang sama. Seperti dalam bahasa semula jadi, dalam Perl hasil yang sama boleh dicapai dalam beberapa cara, menggunakan cara ekspresif bahasa yang berbeza. Inilah yang dipanggil prinsip TIMTOWTDI - singkatan berbunyi "Tim Toady" dan bermaksud "Terdapat lebih daripada satu cara untuk melakukannya": "terdapat lebih daripada satu cara untuk melakukan sesuatu." Selaras dengan itu, setiap pembangun memilih versi reka bentuk bahasa yang paling sesuai untuknya situasi tertentu, lebih konsisten dengan gaya atau tahap penguasaan bahasanya.

Pendekatan ini benar-benar bertentangan dengan pandangan bahasa pengaturcaraan yang formal, apabila matlamat utama pembangunan adalah kejelasan dan meminimumkan binaan bahasa. Tetapi dari sudut pandangan psikologi dan pemikiran linguistik, "pendekatan linguistik" dalam banyak cara adalah lebih produktif, paradoks kerana ia mungkin kelihatan! Lagipun, ia merangsang kreativiti dengan menggunakan pengalaman manusia dalam menggunakan bahasa semula jadi - dan menulis program dalam Perl menjadi menyeronokkan dan menarik. Ini mungkin sebab pengaturcara Perl sangat menyukai perkataan "seronok".

Versi pertama dan "Buku Unta"

Larry Wall mula membangunkan Perl pada tahun 1987 semasa bekerja sebagai pengaturcara di Unisys. Versi 1.0 telah dikeluarkan dan diumumkan pada 18 Disember 1987 sebagai "penggantian" untuk awk dan sed.

Perl 2 dikeluarkan pada tahun 1988. Inovasi utama di dalamnya ialah mekanisme ekspresi biasa yang direka bentuk semula.

Perl 3, dikeluarkan pada tahun 1989, memperoleh keupayaan untuk memproses aliran data binari.

Pada mulanya, satu-satunya dokumentasi untuk Perl ialah halaman manual tunggal (sangat panjang). Pada tahun 1991, buku Programming Perl (dikenali ramai pengaturcara sebagai Buku Unta kerana imej pada kulit muka) telah dikeluarkan, yang menjadi standard bahasa de facto.

Pada masa yang sama, versi bahasa telah "dinaik taraf" kepada versi 4 - bukan untuk menunjukkan perubahan ketara, tetapi untuk menunjukkan bahawa versi bahasa ini telah didokumenkan dalam buku. Perl 4 melalui satu siri keluaran, berakhir dengan Perl 4.036 pada tahun 1993.

Perl 5

Pembangunan Perl 5 bermula pada tahun 1994. Pada masa yang sama, senarai mel perl5-porters dicipta untuk menyelaraskan kerja mengalihkan Perl 5 ke pelbagai platform. Ia kekal sebagai forum utama untuk pembangunan, penyelenggaraan dan port Perl 5.

Perl 5.000 telah dikeluarkan pada 17 Oktober 1994. Ia termasuk penterjemah yang ditulis semula sepenuhnya, serta banyak ciri bahasa baharu seperti objek, rujukan, pembolehubah tempatan (my $var_name) dan modul. Modul adalah bahagian yang sangat penting, kerana ia menyediakan mekanisme untuk melanjutkan bahasa tanpa mengubah penterjemah. Ini membolehkan penterjemah menstabilkan, tetapi pada masa yang sama, ia memberi peluang kepada pengaturcara Perl biasa untuk menambah ciri baharu pada bahasa tersebut. Perl 5 masih dalam pembangunan aktif sehingga hari ini.

Perl 5.001 telah dikeluarkan pada 13 Mac 1995. Perl 5.002 telah dikeluarkan pada 29 Februari 1996, dengan sokongan prototaip baharu. Ini membenarkan pengarang modul mencipta fungsi yang berkelakuan sama seperti terbina dalam. Perl berfungsi. Perl versi 5.003 telah dikeluarkan pada 25 Jun 1996 dan membetulkan masalah keselamatan.

Salah satu perkembangan terpenting dalam sejarah Perl 5 berlaku di luar bahasa itu sendiri dan merupakan akibat daripada sokongan modul. Pada 26 Oktober 1995, CPAN (Rangkaian Arkib Perl Komprehensif) memulakan kerjanya, yang menjadi repositori modul Perl, serta kod sumber bahasa itu sendiri. hidup masa ini rangkaian mempunyai lebih daripada 25,000 modul yang dicipta oleh lebih daripada 8,000 pengaturcara.

Perl 5.004 telah dikeluarkan pada 15 Mei 1997 dan mengandungi, antara lain, pakej UNIVERSAL, yang memberikan bahasa itu objek teras dari mana semua kelas diperoleh secara automatik. Keupayaan untuk menanya versi modul juga telah disertakan. Di samping itu, Perl kini menyokong Microsoft Windows, serta beberapa sistem pengendalian lain.

Perl 5.005 telah dikeluarkan pada 22 Jun 1998. Keluaran ini termasuk beberapa penambahbaikan pada pemproses ekspresi biasa, cangkuk hujung belakang baharu menggunakan modul B::*, operator petikan qr// untuk ungkapan biasa, banyak pilihan modul baharu yang lain dan sokongan untuk beberapa sistem pengendalian, terutamanya. BeOS.

2000an

Perl 5.6 dikeluarkan pada 22 Mac 2000. Perubahan utama termasuk sokongan untuk sistem 64-bit, perwakilan rentetan dalam standard Unicode, sokongan fail besar(fail lebih besar daripada 2 GB) dan kata kunci tentang kami. Semasa pembangunan Perl 5.6, keputusan telah dibuat untuk menukar skema penamaan versi kepada satu lagi serupa dengan projek sumber terbuka yang lain. kod sumber. Versi 5.005_63 diikuti oleh versi 5.5.640; mengikut pelan, versi dalam pembangunan akan diberikan nombor ganjil, versi stabil - nombor genap.

Pada tahun 2000, Larry Wall mengeluarkan panggilan kepada komuniti untuk membincangkan cadangan secara aktif untuk versi Perl yang seterusnya. Hasil perbincangan ini ialah 361 RFC (Request for Comments) yang digunakan dalam pembangunan Perl 6.

Pada tahun 2001, kerja bermula pada dokumen akhir yang meringkaskan cadangan untuk generasi baharu Perl. Hasilnya tidak dibentangkan sebagai dokumen rasmi, tetapi sebagai ringkasan semua RFC. Pada masa ini, Perl 6 wujud semata-mata sebagai penerangan bahasa.

Perl 5.8 pertama kali dikeluarkan pada 18 Julai 2002, dan telah menerima kemas kini tahunan sejak masa itu. Versi terkini Perl 5.8, bernombor 5.8.9, telah dikeluarkan pada 14 Disember 2008. Perl 5.8 menambah baik sokongan Unicode, menambah pelaksanaan I/O baharu, menambah sokongan multithreading, meningkatkan ketepatan berangka dan menambah beberapa modul baharu.

Pada tahun 2004, kerja bermula pada Sinopsis, pada asalnya bertujuan sebagai satu siri dokumen yang meringkaskan dokumen akhir yang disebutkan di atas. Walau bagaimanapun, secara beransur-ansur siri dokumen ini menjadi spesifikasi Perl 6 Pada Februari 2005, Otrius Tan mula bekerja pada Pugs, penterjemah Perl 6 yang ditulis dalam Haskell. Ini adalah percubaan sebenar pertama untuk menjadikan Perl 6 satu realiti. Percubaan ini padam pada tahun 2006.

Apabila anda berusia lebih 20 tahun

Pada 18 Disember 2007, ulang tahun ke-20 Perl 1.0, Perl 5.10.0 telah dikeluarkan. Versi ini mengandungi beberapa inovasi ketara yang membawanya lebih dekat kepada Perl 6. Beberapa inovasi ini ialah pernyataan suis baharu (dipanggil "diberikan"/"bila"), kemas kini kepada ungkapan biasa dan pengendali padanan "pintar" "~~ ".


Ulang tahun "Mutiara".

Sekitar masa ini, pembangunan bermula dengan sungguh-sungguh pelaksanaan baharu Perl 6, dikenali sebagai Rakudo Perl, dibangunkan bersama dengan mesin maya Parrot. Sejak November 2009, Rakudo Perl telah dikemas kini secara kerap setiap bulan dan pada masa ini merupakan pelaksanaan paling lengkap Perl 6.

Perubahan ketara dalam proses pembangunan Perl 5 berlaku dengan keluaran Perl 5.11. Komuniti pembangunan telah beralih kepada kitaran keluaran bulanan, dengan tarikh keluaran dirancang tiga bulan lebih awal.

Pada 12 April 2010, Perl 5.12.0 telah dikeluarkan kepada umum. Ciri ketara termasuk sokongan untuk sintaks NAME VERSION pakej baharu, pengendali Yada Yada (yang berfungsi untuk menandakan kod pemegang tempat yang masih belum dilaksanakan), penyelesaian lengkap kepada "masalah Y2038", beban berlebihan operator ungkapan biasa, sokongan untuk DTrace (jejak dinamik), serta sokongan penuh Piawaian Unicode 5.2.

Perl 5.12.2 dikeluarkan pada 7 September 2010 dan Perl 5.12.3 dikeluarkan pada 21 Januari 2011. Keluaran ini mengandungi kemas kini modul serta beberapa perubahan dokumentasi. Versi 5.12.4 telah dikeluarkan pada 20 Jun 2011. Versi terkini cawangan ini, 5.12.5, dikeluarkan pada 10 November 2012.

Rancangan Lima Tahun Lepas

Perl 5.14 telah dikeluarkan pada 14 Mei 2011. Sokongan JSON menjadi terbina dalam bermula dengan versi 5.14.2. Versi terkini cawangan ini, 5.14.4, telah dikeluarkan pada 10 Mac 2013.

Perl 5.16 telah dikeluarkan pada 20 Mei 2012. Inovasi penting ialah keupayaan untuk menentukan versi Perl yang diingini untuk dicontohi, membolehkan pengguna mengemas kini Perl sambil mengekalkan kefungsian skrip lama yang sebaliknya akan menjadi tidak serasi dengan versi baharu. Teras Perl 5.16 menyokong Unicode 6.1.

Perl 5.18 telah dikeluarkan pada 18 Mei 2013. Inovasi penting termasuk cangkuk dtrace baharu, fungsi leksikal, peningkatan dalam bilangan fungsi yang disertakan dalam kernel, semakan kepada pelaksanaan cincang atas sebab keselamatan, sokongan untuk Unicode 6.2.

Yang baru dikeluarkan pada 27 Mei 2014 versi stabil- Perl 5.20.0. Pembangunan mengambil masa kira-kira 12 bulan, bermula dengan Perl 5.18.0, dan mengandungi kira-kira 470,000 baris yang diubah suai antara 2,900 fail daripada 124 pengarang.

Perl 5.22.1 telah dikeluarkan pada Disember 2015. Pembangunan mengambil masa 6 bulan.

Pada 9 Mei 2016, versi stabil baharu bahasa pengaturcaraan Perl 5.24.0 telah dikeluarkan. Pembangunan mengambil masa kira-kira 11 bulan, bermula dengan Perl 5.22.0, dan mengandungi kira-kira 360,000 baris yang diubah suai antara 1,800 fail daripada 77 pengarang.

Menurut data pada Julai 2016, indeks TIOBE, yang mengukur pertumbuhan populariti bahasa pengaturcaraan, menunjukkan Perl berada di kedudukan ke-9:

Ini adalah 2 kedudukan lebih tinggi daripada tahun lepas.

Perl 6

Seperti yang dinyatakan dalam Wikipedia, Perl 6 ialah versi seterusnya bahasa pengaturcaraan Perl (dari sudut pandangan struktur, adalah lebih mudah untuk menganggap Perl 6 sebagai bahasa bebas pengaturcaraan). Merupakan perkembangan revolusioner bahasa, yang terakhir ditulis hampir “dengan batu tulis bersih" Buat pertama kali dalam sejarah Perl, pembangunan versi baharu bermula dengan penulisan spesifikasi yang masih mengalami perubahan sehingga kini.

Perl 6, apabila menyusun atur cara, mencipta bytecode, yang kemudiannya dilaksanakan mesin maya. Pendekatan yang sama digunakan dalam teknologi Java dan .NET Framework.

Malah, kita boleh bercakap tentang bahasa baru yang mempunyai versi terdahulu Perl mempunyai akar yang sama, tetapi tidak serasi dengannya, walaupun spesifikasi mencadangkan mod keserasian.

Pembangunan Perl 6 bermula pada tahun 2000 dan berterusan sehingga hari ini.

Perl pada asalnya bertujuan untuk menjadi alat yang setanding dalam prestasi kepada utiliti Unix yang disusun. Kelajuan operasi perlu dipastikan oleh fakta bahawa sistem masa jalan Perl membaca teks asal Program Perl dan menyusunnya dengan cepat, kemudian segera mentafsir program yang disusun.

Larry Wall secara berseloroh mengisytiharkan tiga kebaikan utama seorang pengaturcara: kemalasan, ketidaksabaran dan kesombongan. Pada pendapatnya, Perl direka untuk memenuhi kualiti pembangun ini.

Artikel ini ditulis untuk orang yang, disebabkan oleh force majeure segera merasakan keinginan untuk belajar Pearl. Bagi saya, keadaan ini ialah komputer saya menjadi pelayan WEB, dan saya, sewajarnya, menjadi tuan WEB. Sudah menjadi kebiasaan untuk belajar daripada kesilapan dan pengalaman orang lain, jadi saya membawa kepada perhatian anda pengalaman saya belajar Pearl.

Ia serta-merta perlu menjelaskan untuk siapa ini semua ditulis. Jika pelayan anda sedang berjalan platform UNIX, maka saya harus membaca artikel anda. Saya telah memasang stesen kerja Windows NT 4.0 (RUS) plus Pek Perkhidmatan 3. Apabila tiba masanya untuk membuat pelayan WEB daripada komputer saya, saya bergegas ke Perkhidmatan Hos WEB terbina dalam, tetapi dengan cepat menyedari bahawa saya tidak menyukainya (mengapa?). Dan kemudian seorang yang baik hati dinasihatkan untuk memasang Xitami Pelayan WEB daripada iMatix Corporation (), yang masih berdiri hari ini.

Bagi Pearl sendiri, ia agak rumit. Selepas menggali melalui pelbagai pelayan Perl (www.perl.org, www.perl.com), saya mengetahui bahawa terdapat begitu banyak versi Perl sehingga agak sukar untuk memilih sesuatu yang khusus. Pada masa yang sama, tiada cadangan yang jelas di mana-mana mengenai pilihan satu versi atau yang lain. Setelah mencuba hampir semua versi untuk Windows, saya memilih Active Perl().

Bagi seseorang yang dimanjakan oleh semua jenis Windows dan Delphi, menulis atur cara dalam Perl agak luar biasa, jadi saya amat mengesyorkan memasang Perl Builder dengan segera. Anda boleh mendapatkannya di www.solutionsoft.com. Terdapat versi Demo selama tiga puluh hari di sana.

Nah, saya rasa sudah tiba masanya untuk terus ke intinya. Secara umum, skrip Pearl, seperti mana-mana program lain, berfungsi seperti ini:

  1. menerima data
  2. memproses data
  3. memberikan hasil

Anda boleh memindahkan data ke skrip menggunakan dua kaedah - GET dan POST. Perbezaan di antara mereka ialah apabila menggunakan GET, data sentiasa tergantung dalam bar alamat penyemak imbas, sebagai contoh:

Httр://treagraf.tasur.edu.ru/cgi-bin/price.pl?Category=POWER&Description=varta

Dalam kes ini, skrip B_price.pl mengambil data dalam pembolehubah persekitaran QUERY-STRING.

$data=$ENV("QUERY_STRING");

menggunakan kaedah POST data dipindahkan ke input standard skrip. Panjang blok data diambil dalam pembolehubah CONTENT_LENGTH:

Baca(STDIN,$data,$ENV("CONTENT_LENGTH"));

Kini data ini perlu diterjemahkan ke dalam bentuk yang boleh dihadam, kerana ia dikodkan.

Konvensyen standard adalah untuk menggantikan ruang dengan tanda tambah dan kemudian mengekodkan baki aksara tidak sah menggunakan kod ASCII dalam perenambelasan, didahului oleh tanda (%). Contoh:

Http://treagraf.tasur.edu.ru/cgi-bin/B_price.pl\ ?Category=%C2%E8%E4%E5%EE&Description=%E0%E1%E2%E3

Ini bermaksud:

Http://treagraf.tasur.edu.ru/cgi-bin/B_price.pl?\ Category=Video&Description=abvg

Adalah lebih baik untuk menyahkod rentetan pertanyaan sendiri buat kali pertama. Kepada soalan "bagaimana?" Terdapat banyak jawapan yang tidak masuk akal untuk ditulis semula. Izinkan saya memberi anda contoh ringkas:

Gantikan tanda (+) dengan ruang

$query = ~ s/\+/ /g;

Kemudian kami menggantikan semua kombinasi tanda (%), diikuti dengan digit heksadesimal, dengan aksara ASCII yang sepadan

$query =~ s/%((2))/pack("C", hex($1))/cth;

Saya menggunakan apa yang ditawarkan oleh Perl Builder:

#! E:\perl5\bin\perl # panggil rutin pengambilan data $Category = $field("Category"); # dapatkan data dari medan Kategori $Description = $field("Description"); # dapatkan data dari medan Penerangan $Page = $field("Page"); # dapatkan data daripada medan Halaman

Pada penghujung skrip kami meletakkan subrutin untuk bacaan data "telus".

Sub GetFormInput ( (*fval) = @_ if @_ ; local ($buf); if ($ENV("REQUEST_METHOD") eq "POST") ( read(STDIN,$buf,$ENV("CONTENT_LENGTH")) ; ) else ( $buf=$ENV("QUERY_STRING"); ) if ($buf eq "") (kembali 0;) else (@fval=split(/&/,$buf); foreach $i (0 . . $#fval)( ($nama,$val)=split (/=/,$fval[$i],2); $val=~tr/+/ /; $val=~ s/%(.. )/pack("c",hex($1))/ge; $name=~tr/+/ /; $name=~ s/%(..)/pack("c",hex($1))/ ge; if (!defined($field($name))) ( $field($name)=$val; ) else ($field($name) .= ",$val"; #if you want multi-selects untuk masuk ke array tukar ke: #$field($name) .= "\0$val" ) ) return 1;

Peringkat kedua skrip - pemprosesan data - sepenuhnya mengikut budi bicara anda. Semak data yang diterima untuk ketepatan, tuliskannya ke fail, lakukan apa sahaja yang anda mahu.

Akhir sekali, anda perlu memberikan beberapa hasil kepada penyemak imbas pelanggan supaya penyemak imbas memaparkannya dengan betul. Iaitu, anda perlu memaparkan keputusan dalam HTML. Ini dilakukan secara ringkas: (juga boleh dilakukan dengan cara yang berbeza)

Cetak "Content-type: text/html", "/n/n"; #cetakan baris yang diperlukan "

Dalam medan Kategori yang anda masukkan: ", $Category, "

Ini semua terpakai pada skrip yang menerima data daripada borang pada halaman HTML. Dalam kes ini, halaman dengan borang adalah berasingan, skrip adalah berasingan. Anda boleh menjadikannya lebih cantik dan lebih mudah: gabungkan halaman dan skrip menjadi satu keseluruhan. Untuk melakukan ini, skrip ditulis mengikut skema berikut:

  1. Apabila pertama kali dilancarkan, skrip dilukis halaman HTML dengan borang dan pautan dalam teg ACTION kepada dirinya sendiri. Larian pertama ditentukan oleh ketiadaan data input.
  2. Sekiranya terdapat data input, maka kami menerimanya, memprosesnya dan menghasilkan hasil.

#! E:\perl5\bin\perl if (($ENV("QUERY_STRING") eq "") atau ($ENV(CONTENT_LENGTH)=0)) ( # jana halaman dengan borang ) lain (# terima data, proses dan keluarkan hasilnya)

Buku tetamu

Algoritma umum untuk buku tetamu adalah seperti berikut:

1. Jika pengunjung ingin membuat catatan dalam buku, maka
1.1 Mendapatkan data
1.2 Tuliskannya pada fail atau pangkalan data
1.3 Kami mengucapkan terima kasih kepada HTML dan mencadangkan membaca entri lain
2. Jika pengunjung ingin membaca entri dalam buku tersebut, maka
2.1 Membaca rekod daripada fail atau daripada pangkalan data
2.2 Kami memaparkannya dengan cantik dalam HTML

Untuk memudahkan persepsi, saya memformat mata 1 dan 2 dengan skrip berasingan add_guestbook.pl dan read_guestbook.pl, masing-masing. Mesej buku tetamu disimpan dalam fail teks baris demi baris, i.e. untuk setiap rekod ada garisan. Ini dilakukan untuk menjadikan fail ini lebih mudah dibaca. Contoh satu entri:

Sab Dis 5 13:31:20 1998&Natasha&pelajar&Baik&Baik sebagai permulaan. Saya doakan anda berjaya dalam bidang ini, Alexander!&no@yet&194.226.60.34

Berikut ialah perihalan medan dalam buku pelawat yang dimaksudkan.

  • Nama - nama pertama, nama keluarga, patronimik, nama panggilan - mengikut budi bicara pelawat
  • Kerja - profesion, pekerjaan
  • RadioButton - tiga butang: Saya menyukainya (Baik), saya tidak menyukainya (Teruk), saya tidak peduli (Berbeza)
  • Teks - kotak teks komen dan nota
  • E-mel - alamat pemulangan

Peristiwa penting dalam dunia pengaturcaraan ini berlaku pada tahun 1986, apabila seorang lelaki yang kelihatan biasa, Larry Wall, selepas bekerja dengan teliti, mengumumkan kepada dunia bahawa dia telah membangunkan bahasa pengaturcaraan Perl. Laluan ke acara penting ini ternyata sukar dan berduri, tetapi hasilnya berbaloi. Bagaimana, siapa dan mengapa membangunkan bahasa pengaturcaraan baharu? Berikut adalah jawapan kepada semua soalan ini.

Latar belakang

Dorongan untuk penemuan ini adalah apabila beliau mengambil bahagian dalam projek UNIX. Kerja itu sukar, kerana ia perlu dibuat rangkaian selamat dengan banyak peringkat, supaya mungkin untuk menggabungkan kerja beberapa komputer yang beroperasi pada jarak yang agak jauh antara satu sama lain. Keseluruhan proses telah berjaya diselesaikan, tetapi laporan itu mestilah sangat intensif buruh, bukan sahaja dengan sejumlah besar fail, tetapi juga dengan antara mereka.

Wall memutuskan untuk menggunakan penapis awk untuk kerja itu, tetapi halangan yang tidak dijangka timbul: adalah mustahil untuk mengawal sama ada pembukaan atau penutupan sejumlah besar fail - ironinya - berdasarkan maklumat yang terkandung di dalamnya tentang lokasi fail ini.

Pada mulanya, Larry memutuskan untuk menulis utiliti sistem khusus untuk menyelesaikan masalah yang tidak dijangka. Ia seolah-olah menjadi jalan keluar dari keadaan semasa. Tetapi sebelum itu, dia telah menyusun beberapa utiliti untuk menyelesaikan masalah ini, yang, malangnya, tidak menjadi penyelesaian untuk piawaian UNIX.

Itulah sebabnya pentadbir sistem yang berbakat, seorang ahli bahasa melalui latihan, yang membantunya dalam kerjanya, mengambil risiko dan mencipta bahasa pengaturcaraan Perl, supaya ia akan dapat memproses fail teks secara serentak, mencari penyelesaian untuk tugas sistem, buat laporan yang lebih mudah difahami. Dan pada masa yang sama, ia mestilah pengaturcaraan peringkat rendah yang boleh diakses dalam bahasa C Itulah sebabnya penterjemah Perl ditulis di dalamnya.

Bahasa pengaturcaraan baru: sebab kejadiannya

Menurut Larry, kemalasan membantunya mencipta bahasa baharu. Tetapi kemalasan inilah yang memungkinkan untuk menyelesaikan masalah penting: bagaimana untuk mengelakkan penyusunan sejumlah besar program untuk perbezaan bahasa, yang merupakan sebahagian daripada alatan UNIX. Prosedur ini terlalu membosankan.

Kebaikan bahasa baharu itu dihargai oleh orang lain, kerana ia menggabungkan secara harmoni keupayaan pemprosesan fail dan pentadbiran sistem. Dan ini betul-betul dua fakta penting yang diperlukan semasa memprogramkan sistem UNIX.

Perlu diingatkan bahawa bahasa pengaturcaraan Perl mempunyai sedikit perbezaan daripada bahasa lain yang serupa: ia muncul kerana terdapat keperluan untuknya, dan bukan untuk memukau pengguna atau menghasilkan alat lain yang cantik yang tidak akan memainkan peranan khas.

Sebaliknya, apabila Larry memperkenalkan ciptaannya kepada pengguna, ia mencipta sensasi sebenar di kalangan pentadbir sistem, kerana kini tidak perlu menghabiskan banyak masa untuk menyelidiki beberapa bahasa pengaturcaraan, dan menjadi mungkin untuk menyelesaikan masalah dengan mudah dengan menggunakan satu bahasa menggunakan jadual simbol.

Keanehan

Diterjemahkan ke dalam bahasa Rusia, akronim Perl berbunyi seperti "bahasa praktikal untuk mengekstrak data dan membuat laporan."

Mereka memutuskan untuk menjadikan unta sebagai simbol jenis bahasa ini, mungkin memandangkan kerana haiwan ini mulia, tahan lasak, mampu menanggung beban berat selama beberapa hari tanpa aduan, kerja yang sama menyerupai beban pada bahasa baru, yang serius juga.

Terdapat banyak sebab mengapa bahasa baharu itu segera dihargai oleh ramai pengguna. Sesiapa sahaja yang menggunakan sistem UNIX tahu bahawa tetapan di sini dibuat melalui fail khas - fail teks biasa, dan perubahan dibuat selepas melaksanakan arahan. Mereka ditulis dalam bahasa shell khas dan dilaksanakan dari baris arahan.

Sistem UNIX membolehkan anda mencipta arahan tersuai dengan melukis dan menyimpan arahan penterjemah. Mereka kekal dalam fail teks dan, jika perlu, dilaksanakan sebagai set standard arahan sistem pengendalian - hanya melalui baris arahan.

Perintah pengguna sebaliknya dipanggil skrip. Pada sistem UNIX, pentadbir operasi perlu menulis sejumlah besar skrip, yang, seterusnya, memproses skrip berikutnya, iaitu fail teks menggunakan program khas:

  • Awk. Program ini memungkinkan untuk membandingkan dengan sampel ini dan berfungsi sebagai penjana laporan.
  • Sed. Bertindak sebagai editor kelompok untuk fail teks.

Program membaca baris fail input satu demi satu sebagai penapis. Mereka kemudian melakukan tindakan yang digunakan pada rentetan, yang ditentukan oleh arahan program. Dalam kes ini, rangkaian aksara dipilih mengikut corak tertentu, penggantian mengikut peraturan yang ditetapkan, fail baharu dihasilkan.

Peluang hebat

Bahasa pengaturcaraan baharu Perl telah membuka kemungkinan yang sangat kaya dalam kes di mana perlu untuk memproses teks dan ungkapan yang stabil. Perl mempunyai pelbagai jenis modul pembantu.

Lama kelamaan ini bahasa yang unik telah meluaskan sempadannya dan kini digunakan secara meluas dalam pembangunan web dan permainan, jika pengaturcaraan rangkaian atau grafik untuk pengguna diperlukan.

Bahasa ini telah diterima dan digemari kerana kemudahan penggunaannya; ia kini diiktiraf sebagai bahasa pengaturcaraan yang paling dinamik. Ia menyokong pelbagai paradigma, yang termasuk gaya - berfungsi, prosedur dan lain-lain, ia mempunyai kawalan memori, dan sokongan untuk pemprosesan teks.

Bukan tanpa alasan salah satu moto L. Wall mengatakan bahawa perkara yang mudah boleh kekal ringkas, tetapi perkara yang rumit mesti dilakukan.

Mudah untuk menguasai bahasa apabila anda memahami ungkapan tugasan, blok kod, struktur kawalan dan fungsi.

Persamaan dengan bahasa lain

Larry banyak meminjam daripada bahasa pengaturcaraan lain. Sebagai contoh:

  • Cengkerang UNIX. Pembolehubah ditandakan dengan aksara terkemuka, mereka menyatakan dengan jelas jenis pembolehubah dan membantu pembolehubah ini diinterpolasi dalam rentetan. Fungsi terbina dalam menyediakan instrumentasi, dan ini digunakan untuk memprogramkan shell.
  • Susunan daripada Lisp.
  • Menggunakan ungkapan biasa Perl daripada awk, dalam masa yang sama meminjam motif berpersatuan daripadanya.
  • Dari sed.

Tetapi bahasa baru mengatasi tugasnya sendiri dengan lebih cepat, dan oleh itu mereka mula menggunakannya bukan sahaja untuk menyelesaikan masalah pentadbiran sistem.

Wall menerima bungkusan daripada G. Spencer yang membantunya menguasai Perl biasa ungkapan, mengubah suainya agar sesuai dengan ciptaan anda. Banyak ciri yang dibangunkan bukan semata-mata disebabkan oleh Larry. Rakan-rakan sekerja dan rakan-rakan cuba tidak kurang bersemangat untuk membawa program unik inovasi anda. Dan apabila bahasa itu muncul di Internet, seluruh komuniti orang yang berfikiran sama terbentuk yang turut membantu memperbaikinya. Sejak itu, mengikut statistik, lebih daripada 10,000 pengaturcara telah terlibat dalam kerja itu.

Walau bagaimanapun, bahasa itu masih dipertingkatkan berkat pembangunan pakej yang berjaya digunakan dalam melaksanakan aplikasi baharu bahasa untuk membangunkan teknologi yang berkaitan dengan maklumat.

Peringkat perkembangan

Peringkat kecil tetapi penting dalam perjalanan boleh diserlahkan dalam jadual.

Versi yang dikeluarkan

Masa penciptaan

perl 1. Tidak mengandungi banyak ciri. Ini adalah cara paling mudah untuk mencari fail menggunakan corak. Tetapi terdapat deskriptor fail, pembolehubah format dan skalar.

1988 Januari.

perl 2. Mekanisme ungkapan biasa yang belum diperbaiki telah muncul.

1988 Jun.

perl 3. Pembangun telah mencapai keupayaan untuk memproses aliran data binari.

1989 Oktober.

perl 4. Muncul sebahagian besarnya berkat buku yang diterbitkan, “Programming Perl", tetapi di bawah nama yang lebih dikenali sebagai "Buku Unta". Bahasa baharu telah didokumenkan. Tempoh ini melalui keseluruhan siri keluaran, akhirnya diselesaikan pada versi 4.036. Ia sudah 1993. Kemudian kerja bermula pada versi - V - seterusnya.

1991 Mac.

perl 5. Menambah sokongan untuk jenis data yang kompleks, model objek, yang merangkumi rujukan, pakej dan penutupan sebagai nilai. Senarai mel dibuat supaya kerja boleh diselaraskan platform yang berbeza. Malah, ia menjadi forum utama untuk pembangunan, pelabuhan dan penyelenggaraan. Modul kini merupakan bahagian penting dalam versi, kerana ia dapat mengembangkan bahasa, tetapi tanpa mengubah penterjemah. Ini dapat menstabilkan dia, tetapi mengembangkan keupayaan bahasanya.

1994 Oktober.

Perl unik - bahasa pengaturcaraan: kebaikan dan keburukan

Perl 5 sedang giat dibangunkan dan kini sedang dikemas kini dengan versi baharu. Tetapi semua perkembangan mempunyai beberapa faktor yang sama: penaipan data automatik dijalankan, dan memori dikawal secara automatik.

Terima kasih kepada penterjemah, bukan sahaja jenis, tetapi juga permintaan memori setiap objek program diketahui, dan tidak sukar baginya untuk memperuntukkan memori dan membebaskannya apabila mengira rujukan.

Perlu diingatkan bahawa pengaturcaraan Perl membezakan penterjemah daripada yang lain. Buktinya ialah terjemahan program ke dalam kod bait perantaraan, dan hanya kemudian ia mula dilaksanakan. Sebagai perbandingan: yang tradisional berfungsi sedikit berbeza - operator yang dimasukkan ditafsirkan dan dilaksanakan serta-merta, yang penuh dengan ralat sintaks semasa aliran kerja. Perl membolehkan anda mengesan jenis ralat ini semasa terjemahan ke dalam kod beli.

Untuk menukar satu jenis data kepada yang lain, anda perlu proses automatik, jika terjemahan mana-mana jenis data adalah mustahil, ini boleh membawa kepada ralat yang membawa maut.

Kelebihan versi 5004 ialah terdapat pakej UNIVERSAL, yang memberikan bahasa objek utama, dan semua kelas diperoleh daripadanya - secara automatik. Ia kini boleh meminta versi modul. Ia telah menjadi kenyataan untuk menyokong permintaan versi modul. Di samping itu, perl mula menyokong banyak sistem pengendalian, termasuk Microsoft Windows.

Versi 5.005, dikeluarkan pada tahun 1998, telah meningkatkan kualiti pemproses ekspresi biasa dengan ketara, menambah baik cangkuk baharu di bahagian belakang, yang diselesaikan dengan bantuan modul tertentu, dan memperluaskan sokongan untuk sistem pengendalian.

Kemas kini terkini

Tahun dua ribu memberi dunia versi baru, 5.6, bahasa Mutiara. Ia sudah kelihatan lebih kukuh daripada yang pertama, mempunyai sistem 64-bit, dapat menyokong fail yang lebih besar daripada dua GB, termasuk perwakilan rentetan, dengan mengambil kira standard Unicode, serta kata kunci - kami. Dalam tempoh ini, skema penamaan versi berubah menjadi lebih serupa dengan projek sumber terbuka yang lain.

Fakta menarik ialah keputusan ini: jika versi sedang dibangunkan, ia akan diberikan nombor dengan nombor ganjil, dan yang stabil akan menerima nombor genap.

Wall kemudian meminta pengikutnya membuat cadangan untuk mencipta versi yang lebih maju. Panggilannya didengari, dan hasilnya ialah 361 dokumen, yang membantu membangunkan versi VI. Pengguna telah dibentangkan dengan dokumen yang kemungkinan besar menyerupai ringkasan, dan versi ini wujud, tetapi hanya dalam bentuk perihalan bahasa. Beberapa dokumen menjadi spesifikasi untuk versi ini. Percubaan untuk melancarkan penterjemah versi VI pada tahun 2006 telah dihentikan. Tetapi sejak 2009, di bawah nama Rakudo Perl, versi ini telah hidup dan dikemas kini secara berkala.

Perubahan ketara dalam proses pembangunan Perl 5 berlaku dengan keluaran Perl 5.11. Komuniti pembangunan telah beralih ke kitaran keluaran bulanan, dengan tarikh keluaran dirancang tiga bulan lebih awal.

Versi baharu

Versi 5.8 muncul pada tahun 2002. Ia terkenal dengan fakta bahawa sejak itu ia dikemas kini setiap tahun sehingga 2008, ia telah meningkatkan sokongan Unicode dengan ketara, menambah banyak fungsi, termasuk sokongan multithreading, pelaksanaan I/O asal dan meningkatkan ketepatan berangka. Dan, sekali lagi, modul baru muncul.

Pada ulang tahun ke-20 penciptaan bahasa pengaturcaraan tujuan umum, versi baharu bernombor "5.10.0" tidak mengecewakan pengguna sekali lagi. Pengendali baharu telah muncul, serta padanan "pintar", dan ungkapan biasa telah dikemas kini.

Apa yang telah dibawa oleh tahun-tahun terakhir kerja?

Setiap tahun, peningkatan baharu membantu menjadikan bahasa yang dicipta oleh Wall lebih mudah, ringkas dan lebih mudah diakses. Tahun 2010 ditandai dengan fakta bahawa sintaks bahasa Perl menerima sokongan untuk VERSI NAMA pakej, ungkapan biasa pada tahun-tahun berikutnya, modul telah dikemas kini dan sokongan untuk pengendali telah diperluaskan.

Matlamat telah dicapai - untuk menunjukkan pada masa jalan versi yang harus dicontohi, yang bermaksud membenarkan perl dikemas kini, tetapi pada masa yang sama tidak kehilangan keupayaan kerja skrip yang digunakan, yang menimbulkan ancaman tidak serasi dengan versi baharu dibentangkan. Ia menjadi lebih banyak ciri, keselamatan telah meningkat.

Pada penghujung Mei, baru-baru ini, versi seterusnya muncul, seperti biasa, lebih baik dan lebih mudah untuk digunakan. Hari ini, sesiapa sahaja boleh mengujinya dan melihat dari pengalaman peribadi mereka sendiri bahawa banyak kerja telah dilakukan untuk mencipta bahasa pengaturcaraan ini.

Dalam bahasa Perl ini, tatasusunan tidak terhad. Menggunakan bahasa, anda boleh menyelesaikan tugas bukan tradisional yang memerlukan beberapa orang, melaksanakan tugas pentadbiran, memproses fail teks dengan kualiti tinggi, dan tidak banyak masa akan dibelanjakan untuk semua masalah. Dengan membangunkan program baharu, menggunakan jadual simbol, menggunakan operator yang diperlukan, hasilnya akan betul dan pantas.

Artikel ini sekali lagi membuktikan bahawa tiada yang mustahil bagi peminat kraf mereka. Kadang-kadang masalah yang paling kecil membawa kepada penemuan yang berguna, yang boleh menjadikan hidup kita lebih mudah.

Kebetulan saya mengenali sekurang-kurangnya dua orang yang ingin belajar Perl. Saya memutuskan untuk menulis jawatan ini khas untuk mereka.

  • Bahagian 1: Jenis Pembolehubah (Anda sedang membaca bahagian ini)

Anda akan dapati contoh di sana program mudah daripada siri "cetak nombor dari 1 hingga 5" dan seumpamanya. Saya selalu suka belajar daripada contoh - ia lebih menarik dan lebih pantas daripada daripada buku atau seminar. Anda juga boleh melihat siaran di blog ini - kemungkinan besar anda akan menemui lebih banyak contoh di sana.

Saya menganggap bahawa di sekolah/institut anda mempelajari Pascal/Delphi, C atau sekurang-kurangnya Asas, dan tidak perlu menjelaskan apa itu fungsi dan gelung. Jika ini tidak berlaku, tidak mengapa, anda hanya perlu meluangkan masa tambahan membaca Wikipedia untuk memikirkannya. Jika anda tidak tahu cara menjalankan skrip bash, atau mengapa dalam baris pertama skrip anda harus menulis sesuatu seperti #!/bin/sh, anda perlu melakukan googling sedikit untuk mengetahuinya.

Terutama bagi mereka yang berminat dengan soalan "adakah benar Perl sangat rumit", "buku apa tentang Perl boleh anda cadangkan" dan juga "eh... adakah ia masih tertulis di dalamnya?", Saya menulis Mini- Soalan Lazim tentang Perl , yang boleh anda baca di HabraHabr. Dan bagi mereka yang tidak menguatkan banyak huruf Di sini saya akan memberikan ringkasan ringkas mengenainya:

  • Perl ialah bahasa pengaturcaraan moden yang telah ditulis dan akan terus ditulis untuk masa yang sangat lama.
  • Perl, seperti mana-mana bahasa pengaturcaraan lain, mempunyai kelebihan, kelemahan dan aplikasinya. wujud sangat besar kelas masalah yang Perl selesaikan dengan 5+.
  • Sintaks Perl tidak lebih kompleks daripada sintaks C++ atau Java. Anda boleh mengesahkan ini dengan membaca siaran ini hingga akhir.
  • Terdapat tutorial Perl yang bagus tetapi murah. Anda juga boleh mencari komuniti pengaturcara Perl dalam talian dengan mudah yang bercakap bahasa ibunda anda.
  • Perl berfungsi dengan baik di bawah kedua-dua sistem pengendalian keluarga UNIX, dan di bawah Windows Evil.

Tambahan: Saya juga mengesyorkan anda membaca artikel Perl vs Python vs Ruby vs PHP dan Priest of Programming. Yang pertama bercakap tentang prestasi pelbagai bahasa skrip, yang kedua bercakap tentang Perbezaan PHP daripada bahasa lain. Untuk peminat Python, saya nasihatkan anda membaca artikel Ujian prestasi skrip Python. Saya berharap bahan-bahan ini akan membantu anda mencari jawapan kepada soalan "apa yang baik tentang Perl."

Hello %username%!

Jadi, mari tulis skrip Perl pertama kami!

#!/usr/bin/perl

$nama = shift() ;
print("Hello, $nama! \n") ;

Mari jalankan skrip:

$ chmod u+x 1 .pl
$ ./ 1 .pl afiskon
Hello afiskon!

Semuanya sangat mudah di sini:

  • Nama pembolehubah skalar (iaitu, bukan tatasusunan atau cincang, apa itu - lihat di bawah) bermula dengan tanda dolar.
  • Fungsi anjakan mengembalikan hujah skrip seterusnya. Dalam erti kata lain, panggilan pertama untuk shift() mengembalikan argumen pertama, panggilan kedua mengembalikan argumen kedua, dan seterusnya.
  • Fungsi print() mencetak rentetan yang diluluskan sebagai hujah.
  • Anda boleh menggantikan nilai pembolehubah ke dalam baris (lihat baris 4). Untuk maklumat lanjut tentang rentetan, lihat di bawah.

Jika masih belum jelas, tidak mengapa. Mungkin sedikit teori akan membawa sedikit kejelasan.

Jenis boleh ubah

Terdapat tiga jenis pembolehubah utama dalam Perl: skalar(nombor dan rentetan), tatasusunan- serupa dengan yang digunakan dalam Pascal atau C (kadangkala tatasusunan juga dipanggil vektor), dan cincang(tatasusunan bersekutu).

skalar kita sudah gunakan dalam contoh sebelumnya. Berikut ialah beberapa lagi contoh menentukan skalar.

#!/usr/bin/perl

$a = 123 ;
$b = - 7.496 ;
$c = 0xABC; # sama dengan 2748, ya, ia adalah ulasan :)
$d = ($a + $b ) / $c ;
$d *= $a ; # sama seperti $d = $d * $a;

$str1 = "hello" ;
$str2 = "$str1, dunia" ; # $str2 mengandungi "hello, world"
$str3 = $a . " \n". $str2 ;
$str4 = "$str1" ; # $str4 mengandungi "$str1", bukan "hello"

Di sini kami menetapkan nombor positif dan negatif, integer dan pecahan, tetapkan nombor dalam pengekodan perenambelasan, tambah, darab dan bahagi - semuanya seperti dalam C atau Java. Sebagai tambahan kepada operasi di atas, Perl juga menyokong operasi eksponen:

$a = 2 ** 8 ; # hasil: 256

Dengan rentetan, semuanya lebih kurang sama seperti dalam sesetengah PHP. Titik bermaksud operasi penggabungan (iaitu, "melekatkan" rentetan bersama-sama); baris baru(\n), tab (\t), petikan (\"), garis miring ke belakang itu sendiri (\\), tanda dolar tanpa sebarang penggantian berubah (\$) dan banyak lagi. Jika rentetan dalam petikan tunggal, aksara di dalamnya dianggap "seadanya", tanpa penggantian berubah, dsb.

Seperti PHP, Perl mentafsir skalar sebagai nombor atau rentetan bergantung pada operasi. Ia mudah:

$int1 = "11" + 22 ;
# ^ rentetan "11" ditukar kepada nombor,
# selepas itu penambahan dilakukan, hasil: 33.
$str1 = "11" . 22;
# ^ nombor 22 ditukar kepada rentetan,
# selepas penggabungan dilakukan, hasilnya ialah "1122".

Peraturan untuk menukar daripada rentetan kepada nombor dan sebaliknya adalah sama seperti dalam PHP:

$str1 = 0 . "abc" ;
# ^ hasilnya ialah "abc", nombor sifar ditukar kepada rentetan kosong
$int1 = "aaa" + 1 ;
# ^ keputusan ialah 1, tiada nombor dalam rentetan "aaa"
$int2 = "12aaa" + 1 ;
# ^ keputusan ialah 13, hanya digit pertama rentetan diambil kira

By the way, untuk pengumuman beratur panjang Terdapat pengendali khas - q dan qq:

# serupa dengan petikan tunggal
$teks = q (
Adakah anda mempunyai $15?
} ;
# serupa dengan petikan berganda
$mesej = qq (
Helo, $username!
Apa khabar?
} ;

Bekerja dengan Arrays berlaku seperti berikut:

#!/usr/bin/perl

$scalar = "bebebebe" ;
($a, $b) = (1, 2); # sama seperti $a = 1; $b = 2;
@arr = ("aaa" , 123 , $scalar , $a + $b );
cetak $arr [ 1 ] . " \n";
tolak @arr , $a ;
cetak pop (@arr) . " \n";

Di sini kita mencipta tatasusunan @arr yang terdiri daripada 4 elemen (baris 5). Kemudian kami mengeluarkan elemen kedua (baris 6). Penomboran elemen bermula dari sifar, jadi indeks 1 digunakan untuk memaparkan elemen kedua Kemudian kita meletakkan nilai pembolehubah $a di hujung tatasusunan (fungsi tolak, baris 7), dan segera mengambil dan memaparkannya (. fungsi pop, baris 8).

Sila ambil perhatian bahawa nama tatasusunan bermula dengan "anjing" dan bukan dolar (ia tidak sukar untuk diingat - simbol yang sepadan adalah serupa dengan huruf pertama nama jenis bahasa Inggeris: $ - skalar, @ - tatasusunan). Apabila mengakses elemen tatasusunan kedua (baris 6), tanda dolar telah digunakan kerana elemen tatasusunan ialah skalar. Pada mulanya ini menyebabkan banyak kekeliruan, tetapi secara umum semuanya adalah logik.

Juga dalam skrip ini kita panggil fungsi cetakan dan tolak tanpa kurungan. Dalam Perl, apabila memanggil fungsi, di mana-mana sahaja ia tidak menyebabkan kekaburan, kurungan boleh ditinggalkan.

Untuk mengisytiharkan tatasusunan yang elemennya adalah rentetan tanpa ruang, terdapat pengendali khas - qw:

@arr = qw/aaa bbb ccc/ ;
# serupa dengan ("aaa", "bbb", "ccc"), hanya lebih pendek

Hashes adalah serupa dengan tatasusunan, tetapi elemen dalam cincangan tidak dipesan. Dalam kes ini, rentetan boleh digunakan sebagai kunci yang membolehkan elemen itu diakses.

#!/usr/bin/perl

% hash = ( # apabila mengisytiharkan cincang dan tatasusunan anda boleh
"x" => 12 , # gunakan pemisah baris
y => 53, # jika tiada aksara khas dalam kekunci, petikan tidak diperlukan
"z" => - 10.5 , # anda boleh meninggalkan koma di hujungnya
) ;

$hash("x")++; # x koordinat kini 13
$hash ( y ) --; # y koordinat kini 52

# koordinat paparan
cetak "x = $hash(x), y = $hash(y), z = $hash(z)\n ";

Nama cincang bermula dengan tanda peratus dan digunakan untuk merujuk kepada elemen. pendakap gigi(bukan segi empat sama, seperti yang berlaku dengan tatasusunan). Jika nama kunci diketahui lebih awal, anda boleh menentukannya tanpa petikan (baris 10).

By the way, pembolehubah $test, @test dan %test adalah pembolehubah tidak bersandar sepenuhnya dari jenis yang berbeza.

Pada ketika ini saya ingin beralih kepada pernyataan bersyarat dan gelung untuk/sementara, tetapi saya menyedari bahawa terdapat terlalu banyak teks untuk satu jawatan. Sementara itu, banyak persoalan kekal di sebalik tabir:

  • Kenyataan bersyarat;
  • Untuk dan gelung sementara;
  • Pengisytiharan fungsi;
  • Bekerja dengan strim dan fail;
  • Sintaks yang ketat;
  • Menggunakan modul dan kelas siap sedia.

Saya akan menulis tentang ini dalam salah satu jawatan berikut. Saya ingin menerima sekurang-kurangnya beberapa komen pada siaran ini - menarik/tidak menarik, boleh difahami/tidak difahami, dan sebagainya. Ngomong-ngomong, jika anda mempunyai soalan yang berkaitan dengan Perl (tidak semestinya berkaitan dengan siaran ini), sila tanya mereka dalam komen!

Saya harap siri siaran tentang pengaturcaraan dalam Perl ini akan membantu anda menulis skrip mudah pertama anda. Lama kelamaan, skrip akan menjadi lebih kompleks, mereka akan menggunakan teknologi baharu (OOP, ungkapan biasa) dan selepas beberapa ketika anda akan mendapati bahawa anda cukup mengetahui tentang Perl untuk berkongsi pengalaman anda dengan orang lain.

Perl- bahasa yang ditafsirkan disesuaikan untuk memproses fail teks sewenang-wenangnya, mengekstrak maklumat yang diperlukan daripada mereka dan mengeluarkan mesej. Ia juga mudah untuk menulis pelbagai program sistem. Bahasa ini mudah digunakan, cekap, tetapi sukar untuk mengatakan bahawa ia elegan dan padat.

Perl telah dicipta pada tahun 1986 sebagai alat untuk mentadbir dan mengkonfigurasi sumber sistem untuk rangkaian komputer Unix. Ia menggabungkan ciri-ciri terbaik C, shell, sed danwk, jadi bagi mereka yang biasa dengannya, mempelajari Perl tidaklah sukar. Sintaks ungkapan Perl adalah hampir dengan sintaks C. Tidak seperti kebanyakan utiliti OSUNIXPerl, tiada sekatan pada jumlah data yang diproses, dan jika terdapat sumber yang mencukupi, keseluruhan fail diproses sebagai satu baris. Rekursi boleh menjadi kedalaman sewenang-wenangnya. Walaupun Perl direka untuk mengimbas fail teks, ia juga boleh memproses data binari dan mencipta fail .dbm, serupa dengan tatasusunan bersekutu. Perl membolehkan anda menggunakan ungkapan biasa, mencipta objek, memasukkan kepingan kod Perl ke dalam program dalam Power atau C++, dan juga membolehkan anda mengakses pangkalan data.

Bahasa Perl dicipta untuk meningkatkan kecekapan pemprosesan dokumen teks. Ia berorientasikan pemprosesan rentetan. Pada masa ini, bahasa itu telah meluas sebagai alat untuk mencipta modul pelayan WWW boleh laku. Pakej sambungan sedia ada menyediakan akses kepada pelayan SQL terus daripada program Perl. Ini membolehkan anda menggunakannya untuk menyelesaikan semua masalah yang timbul apabila menyediakan akses WWW kepada pangkalan data. Perl juga berkesan apabila memproses struktur data arbitrari: laporan sedia ada, senarai, kad dalam bentuk elektronik.

Walaupun aplikasi CGI boleh ditulis dalam hampir semua bahasa, pengaturcaraan Perl dan CGI telah menjadi sinonim untuk banyak pengaturcara. Seperti kata Hassan Shroeder, juruweb pertama Sun, "Perl ialah nadi Internet ialah bahasa yang paling banyak digunakan untuk pengaturcaraan CGI, dan terdapat banyak sebab yang baik untuk ini:

Perl mudah dipelajari: sintaksnya mengingatkan bahasa lain (contohnya C) kerana ia "sangat memaafkan" - jika ralat berlaku, mesej terperinci dipaparkan yang membantu menyetempatkan masalah dengan cepat.

Perl menggalakkan pembangunan pesat kerana ia adalah bahasa yang ditafsirkan; Kod sumber tidak perlu disusun sebelum dijalankan.

Perl tersedia pada banyak platform dengan pengubahsuaian yang minimum.

Perl mengandungi fungsi pemprosesan rentetan yang sangat berkuasa, dengan sokongan untuk carian ungkapan biasa dan penggantian terbina dalam bahasa.

Perl memproses data binari semudah teks.

Perl tidak memerlukan perbezaan yang jelas antara jenis: nombor, rentetan dan ungkapan boolean ialah skalar biasa.

Perl berinteraksi dengan aplikasi luaran dengan sangat mudah dan menyediakan fungsi asli untuk bekerja dengan sistem fail.

Terdapat banyak modul yang tersedia secara percuma untuk Perl daripada CPAN, daripada modul untuk mencipta grafik dinamik kepada antara muka dengan pelayan Internet dan sistem pengurusan pangkalan data. Untuk maklumat terperinci tentang CPAN, lihat Lampiran B.

Perl benar-benar sangat pantas: apabila ia membaca fail sumber, ia segera menyusunnya ke dalam kod peringkat rendah, yang kemudiannya dilaksanakan. Biasanya, penyusunan dan pelaksanaan dalam Perl tidak dianggap sebagai langkah yang berasingan kerana ia dilakukan bersama: Perl bermula, membaca fail sumber, menyusunnya, menjalankannya dan kemudian keluar. Proses ini diulang setiap kali skrip Perl dijalankan, termasuk skrip CGI. Oleh kerana Perl sangat cekap, proses ini cukup pantas untuk mengendalikan semua permintaan pada pelayan yang kurang sibuk. Walau bagaimanapun, ambil perhatian bahawa pada sistem Windows ini adalah kurang cekap kerana keperluan untuk mencipta proses baharu.

PHP telah dicipta oleh Rasmus Lerdorf pada akhir tahun 1994. Versi pertama dikeluarkan pada tahun 1995 di bawah nama "Personal Home Page Toolkit", kemudian ia direka bentuk semula dan dipanggil PHP/FI Versi 2 (FI - modul pemprosesan borang). Sokongan untuk pangkalan data mSQL juga telah ditambah. Sejak saat itu, sukarelawan mula mengambil bahagian dalam pembangunan.

Statistik penggunaan PHP adalah anggaran, tetapi menurut kajian yang dijalankan oleh Netcraft, pada awal tahun 2001, PHP telah digunakan di lebih daripada 5,300,000 tapak di seluruh dunia. Sebagai perbandingan: pada masa ini bilangan pelayan IIS adalah lebih kurang sama (5 juta). Pembangunan penterjemah PHP mengambil bentuk proses pasukan yang teratur, dengan teras penterjemah dibangunkan oleh Zend.com. Walau bagaimanapun, PHP diedarkan secara bebas: versi terkininya boleh dimuat turun dari PHP.net. Modul PHP dibekalkan dengan pelayan Apache dan dalam kit sistem Linux.

Asalnya singkatan RNR dimaksudkan Prapemproses daripada Rumah muka surat - prapemproses halaman utama. Ini adalah bahasa untuk skrip yang dibenamkan dalam halaman HTML dan dilaksanakan pada pelayan. Untuk sebahagian besar, sintaksnya dipinjam daripada bahasa seperti C, Perl, Java, dan pada masa yang sama banyak ciri ditambah yang kekurangan bahasa ini. Ringkasnya, sintaks PHP ialah alternatif pintar untuk kedua-dua ketegasan C dan "ketiadaan" Perl.

RHP dikurniakan hampir set penuh fungsi yang (sebelum kemunculan PHP) hanya boleh diimpikan oleh pengaturcara web. miliknya sasaran- membolehkan anda membuat halaman web yang dijana secara dinamik secepat mungkin. Kami berhak mengatakan bahawa belajar dan menggunakan PHP akan bermanfaat untuk kedua-dua pemula dan pengaturcara profesional.

Pesaing utama PHP ialah JSP (Halaman Pelayan Java dan Java Scriptlets), ASP (Halaman Pelayan Aktif), Perl, SSI (Server Side Includes), teknologi Cold Fusion Server Pages.

Mari kita pertimbangkan kelemahan yang wujud dalam teknologi ini. JSP- bahasa yang agak sukar untuk dipelajari dan digunakan. A.S.P., berdasarkan sintaks VBScript (Visual Basic), hanya mempunyai beberapa dozen fungsinya sendiri dan oleh itu terpaksa menggunakan objek COM; di samping itu, ia tertumpu secara eksklusif untuk bekerja di bawah Windows. Perl- bahasanya membingungkan, dan kebebasannya menjadikannya sukar untuk difahami. SSI Membolehkan anda hanya mengarang halaman HTML daripada beberapa fail. CF- produk komersial, yang merupakan kelemahan utamanya.

asasmartabat RNR:

    percuma; sentiasa diperbaiki; berfungsi pada platform UNIX dan Windows;

    membenarkan kerja dengan kebanyakan DBMS;

    mempunyai pelbagai fungsi (lebih daripada 3 ribu);

    membenarkan pengaturcaraan berorientasikan objek;

    boleh guna protokol HTTP, FTP, SHAR, SNMP, NNTP, POPZ, soket bersih dan lain-lain;

    membolehkan anda melakukan semua operasi yang disenaraikan pesaingnya di atas, dan juga berfungsi dengan fail grafik. Anda juga boleh menjalankan skrip PHP sebagai fail yang ditafsirkan dan menyusun aplikasi boleh laku (termasuk yang mempunyai sokongan GUI GTK).

Jika anda mendapati bahawa PHP tidak boleh melakukan sesuatu (atau tidak berfungsi seperti yang anda mahukan), tiada siapa akan menghalang anda daripada membuat perubahan yang anda mahukan pada kod sumber PHP (ditulis dalam C). PHP ialah produk perisian sumber terbuka, dan penambahbaikan serta penambahan padanya dengan mencipta modul sambungan anda sendiri sentiasa dialu-alukan.