Pokud jste správce systému Linux, který občas píše kód perl (nebo) vývojář, který se chce naučit programovací jazyk perl , těchto 20 základních tipů pro programování v perlu a triky vysvětlené v tomto článku vám poskytnou rychlý start.
1. Seznam všech nainstalovaných modulů Perl z příkazového řádku Unix
Získejte seznam všech nainstalovaných perl modulů, jak je uvedeno níže.
$ perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/Filter.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/LinkExtor.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/PullParser.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/Parser.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/TokeParser.pm .....
Ve výše uvedeném příkladu
- Soubor::Najít a File::Spec::Functions modul se používají k zobrazení seznamu všech nainstalovaných modulů.
- možnost -M načte modul. Provede použít modul před spuštěním skriptu
- možnost -T umožňuje kontrolu znečištění, která instruuje perl, aby sledoval data od uživatele a vyhnul se tomu, aby s nimi dělal něco nebezpečného. Zde se tato možnost používá, aby se zabránilo přebírání názvu aktuálního adresáře z @INC proměnná a rekurzivní výpis dostupných souborů .pm z adresáře.
- volba -l umožňuje automatické zpracování ukončení řádku na výstupu. Tiskové příkazy budou mít na konec každého řádku přidán nový oddělovač řádků (\n).
- možnost -w vytiskne všechny varovné zprávy.
- možnost -e označuje, že následující řetězec má být interpretován jako skript perl (tj. sekvence příkazů).
2. Vypsat všechny nainstalované moduly Perl ze skriptu perl (pomocí balíčku ExtUtils::Installed)
Pomocí následujícího úryvku kódu perlu získáte seznam nainstalovaných modulů perlu.
my $Inst = ExtUtils::Installed->new(); my @Modules = $Inst->modules(); print "Current List of Installed PERL Modules:\n\n"; foreach my $mod(@Modules){ print "$mod\n"; }
Poznámka :Modul ExtUtils::Installed není předinstalován s programem perl. Měli byste jej tedy nainstalovat z cpan.
3. Seznam modulů Perlu pomocí příkazu Perldoc
perldoc perlmodlib uvádí všechny moduly, které jsou předinstalované s programem perl.
$ perldoc perlmodlib Attribute::Handlers Simpler definition of attribute handlers AutoLoader Load subroutines only on demand .........
Poznámka: Můžete také použít příkaz „perldoc perllocal“ k identifikaci dalších nainstalovaných modulů perlu.
$ perldoc perllocal
Příkaz perldoc perllocal vypíše všechny volitelné moduly nainstalované v systému s následujícími informacemi:
- Datum instalace
- Umístění adresáře, kde je nainstalován modul perl
- Číslo verze modulu Perl
- atd.
4. Zobrazit dokumentaci Perlu z příkazového řádku Unix
K získání nápovědy o konkrétním modulu perl můžete použít buď příkaz perldoc nebo man, jak je ukázáno níže.
$ perldoc Regexp::Common (or) $ man Regexp::Common
Pokud dokument v perlu nestačí, použijte volbu perldoc -m, k zobrazení zdrojového kódu i neformátované dokumentace pod zadaného modulu perl.
$ perldoc -m Regexp::Common
Chcete-li zobrazit dokumentaci ke konkrétní perlské funkci, použijte volbu -f, jak je uvedeno níže.
$ perldoc -f splice
5. Zobrazit online dokumentaci Perl (nebo si ji stáhnout pro použití offline)
Spousta vynikajících perl tutoriálů jsou k dispozici online v dokumentaci k programování Perl.
Z tohoto webu si také můžete stáhnout HTML nebo PDF verzi dokumentace perlu pro offline prohlížení.
- Plná verze (obsahuje soubory HTML a PDF) – perldoc.tar.gz
- Lite verze (obsahuje pouze soubory HTML) – perldoc-html.tar.gz
6. Přečtěte si dokumentaci Perl pomocí Podbrowser
Stáhněte si podprohlížeč. Nainstalované moduly, funkce a dokumentaci perlu můžete procházet vizuálně z podbrowseru. Z jejich webových stránek:
PodBrowser is a documentation browser for Perl. You can view, search and print documentation for Perl's builtin functions, its "perldoc" pages, pragmatic modules and the default and user-installed modules.
Poznámka: Můžete také použít editor Vim jako Perl-IDE, jak jsme probrali dříve.
7. Upravit konfiguraci modulu CPAN ručně
Chcete-li nainstalovat moduly perl z příkazového řádku Linuxu, použijte CPAN. Již dříve jsme diskutovali o tom, jak nainstalovat moduly perl – jak ručně, tak pomocí příkazu CPAN.
Při prvním použití modulu Perl CPAN ( perl -MCPAN ) se spustí skript pro konfiguraci několika možností. Například konfiguruje umístění souborů tar, gzip a unzip, velikost mezipaměti pro adresář sestavení, umístění zdrojového souboru atd.,
Chcete-li překonfigurovat konfigurační soubory modulu CPAN ručně, můžete upravit jeden z následujících souborů.
- ~/.cpan/CPAN/MyConfig.pm – Uživatelsky specifický konfigurační soubor Perl CPAN
- /etc/perl/CPAN/Config.pm – Systémový soubor konfigurace Perl CPAN je uložen někde v adresářovém stromu modulu perl.
$ vim ~/.cpan/CPAN/MyConfig.pm (and / or) $ vim /etc/perl/CPAN/Config.pm
8. Interaktivně upravujte konfigurace modulu CPAN
Spusťte shell cpan, jak je znázorněno níže, a spusťte o conf init , který se zeptá „jste připraveni na ruční konfiguraci“, dejte možnost ( Ano / Ne ) pokračovat. Zobrazí se seznam všech konfiguračních parametrů spolu s jejich hodnotou.
$ perl -MCPAN -e shell cpan> o conf init cpan> o conf
9. Ověřte, zda je nainstalován modul Perl
Pokud chcete vědět, zda je nainstalován modul perl (například Regexp::Common), spusťte následující příkaz. Pokud dostanete „1“ jako výstup se nainstaluje zadaný modul perl. Pokud ne, zobrazí se níže uvedená chybová zpráva.
$ perl -MRegexp::Common -le 'print 1' Can't locate Regexp/Common.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .).
Poznámka: Můžete také zkontrolovat, zda je modul perl nainstalován pomocí příkazu perldoc nebo man. Pokud je nainstalován modul perl, manuálová stránka modulu se úspěšně otevře. Pokud ne, zobrazí se zpráva „Pro tento modul nebyl nalezen žádný manuál / dokumentace“
$ perldoc Regexp::Common $ man Regexp::Common
10. Seznam adresářů, kde jsou umístěny moduly Perl
Pole perlu @INC obsahuje seznam míst, která konstrukty ‚do EXPR‘, ‚vyžadovat‘ nebo ‚použít‘ hledají pro své soubory knihovny. Následující jednořádkový řádek zobrazuje obsah pole @INC perl:
$ perl -e 'foreach $folder (@INC) { print "$folder\n";}'
11. Zkontrolujte verzi nainstalovaného modulu Perl
Ke kontrole čísla verze modulu použijte následující příkaz.
#-- check the version number of CGI module $ perl -MCGI -e 'print "$CGI::VERSION \n"' #-- check the version number of Regexp::Common module $ perl -MRegexp::Common -e 'print "$Regexp::Common::VERSION \n"'
Poznámka: Nezapomeňte si také přečíst naši recenzi na knihu Perl Best Practices.
12. Zadejte minimální verzi modulu Perl k použití
Někdy můžete chtít ve svém programu použít konkrétní verzi modulu perl. Chcete-li se vyhnout použití dřívější verze tohoto modulu, připojte požadované číslo minimální verze do příkazu use ‚module‘, jak je uvedeno níže.
#-- Use version 5.8 of later of module LWP use LWP 5.8
Poznámka: Pokud je verze nainstalovaného modulu nižší než verze, kterou jste zadali v příkazu use, váš program v perlu se ukončí s příslušnou chybovou zprávou.
13. Užitečné moduly Perl pro vývoj webových aplikací
Pokud vyvíjíte webovou aplikaci, možná budete chtít zvážit použití následujících modulů perlu.
- CGI – Univerzální modul pro tvorbu webových stránek
- Šablona – Sada šablon pro generování dynamického webového obsahu
- LWP – LWP se používá k načítání webového obsahu
- WWW::Mechanizovat – Tuto možnost použijte k automatizaci interakce s webem
14. Určete operační systém, pod kterým skript Perl běží
Název základního operačního systému je uložen v proměnné $^O. Níže jsou uvedeny některé běžné hodnoty $^O
- linux – Linux
- MSWin32 – Windows
- aix – AIX
- solaris – Solaris
Poznámka: Hodnota uložená v $^O obsahuje pouze název operačního systému, nikoli číslo vydání. Chcete-li zjistit číslo vydání, zvažte použití POSIX::uname() z balíčku POSIX.
15. Definujte konstantní hodnoty uvnitř skriptu Perl
Nejlepší způsob, jak definovat konstantní hodnoty, je použít Perl Readonly nebo Konstantní modul, jak je znázorněno níže.
use Readonly; Readonly my $PI => 3.1415926535; (or) use Constant PI => 3.1415926535;
Vezměte prosím na vědomí následující:
- Pomocí modulu Readonly můžete definovat skaláry, hash a pole pouze pro čtení.
- Pokud se pokusíte upravit proměnnou pouze pro čtení, program zanikne.
16. Určete uživatele OS a/nebo skupinu OS spuštěním skriptu Perl
Pomocí následujících předdefinovaných proměnných získáte informace o uživateli a skupině aktuálního procesu:
- $< – skutečné ID uživatele (uid); jedinečná hodnota
- $> – efektivní ID uživatele (euid); jedinečná hodnota
- $( – skutečné id skupiny (gid); seznam (oddělený mezerami) skupin
- $) – efektivní id skupiny (egid); seznam (oddělený mezerami) skupin
Vezměte prosím na vědomí následující:
- Tyto informace platí pouze pro systémy Unix
- Hodnoty, které tyto proměnné obsahují, jsou celá čísla.
- Chcete-li získat názvy uživatelů a skupin, použijte „(getpwuid($<))[0]“ (pro informace o uživateli) a „getgrgid($()“ (pro skupiny).
17. Provádění externích příkazů
Existuje mnoho způsobů, jak spouštět externí příkazy z Perlu, jak je vysvětleno níže.
- system() – chcete provést příkaz a nechcete zachytit jeho výstup
- exec – nechcete se vracet k volajícímu skriptu perl
- zpětné zatržení – chcete zachytit výstup příkazu
- otevřít – chcete přenést příkaz (jako vstup nebo výstup) do skriptu v perlu
18. Parse Plain Messy Perl Script pomocí B::Deparse
Máte kus zamlženého nebo prostě chaotického a těžko čitelného kódu v Perlu? B::Deparse modul může pomoci. Zkompiluje a poté dekompiluje daný program, rozbalí jej a pěkně naformátuje. Odstraní řádky komentářů napsané v programu perl.
Chcete-li jej spustit z příkazového řádku, zadejte „perl -MO=Deparse prog.pl“. Zde je příklad jeho použití,
Nejprve vytvořte vstupní program:
$ cat scary.pl for(74,117,115,116){$::a.=chr};(($_.='qwertyui')&& (tr/yuiqwert/her anot/))for($::b);for($::c){$_.=$^X; /(p.{2}l)/;$_=$1}$::b=~/(..)$/;print("$::a$::b $::c hack$1.");
Předejte perlský skript scary.pl modulu Deparse
$ perl -MO=Deparse scary.pl foreach $_ (74, 117, 115, 116) { $a .= chr $_; } ; $_ .= 'qwertyui' and tr/eiqrtuwy/nr oteah/ foreach ($b); foreach $_ ($c) { $_ .= $^X; /(p.{2}l)/; $_ = $1; } $b =~ /(..)$/; print "$a$b $c hack$1."; scary.pl syntax OK
19. Seznam nainstalovaných ovladačů DBI
DBI je standardní modul databázového rozhraní pro Perl. Následující program Perl vytiskne seznam všech nainstalovaných ovladačů DBI.
use strict; use warnings; use DBI; print map "$_\n",DBI->available_drivers;
Příklad výstupu výše uvedeného programu:
DBM ExampleP File Proxy Sponge mysql
Pokud požadovaný ovladač není nainstalován, použijte CPAN k nalezení správného modulu DBD (ovladač databáze).
20. Speciální proměnná regulárního výrazu
Jednou z nejužitečnějších funkcí nebo nejvýkonnějších prostředků pro manipulaci s řetězci v perlu je regulární výraz.
Jádrem toho je regulární výraz, který sdílí mnoho dalších unixových nástrojů.
Perl má řadu speciálních proměnných, které se vyplňují po každé shodě regulárního výrazu m// nebo s///.
- $1, $2, $3 atd. uchovávají zpětné reference.
- $+ obsahuje poslední (nejvyšší číslo) zpětný odkaz.
- $&(dolar ampersand) obsahuje celou shodu regulárního výrazu.
- $’ (dolar následovaný apostrofem nebo jednoduchou uvozovkou) obsahuje část řetězce za shodou regulárního výrazu (napravo od ní).
- $` (zaškrtávací políčko dolaru) obsahuje část řetězce před (vlevo od) shody regulárního výrazu.
Používání těchto proměnných se nedoporučuje ve skriptech perlu, když záleží na výkonu, protože to způsobuje, že Perl zpomaluje všechny regex se shoduje v celém vašem perl skriptu.
Všechny tyto proměnné jsou pouze pro čtení a přetrvávají až do pokusu o další shodu regulárního výrazu.
Příklad
$string = "This is the geek stuff article for perl learner"; $string =~ /the (g.*) stuff(.*) /; print "Matched String=>$&\nBefore Match=>$`\nAfter Match=>$'\nLast Paren=>$+\nFirst Paren=>$1\n";
Výstup výše uvedeného příkladu:
Matched String=>the geek stuff article for perl Before Match=>This is After Match=>learner Last Paren=> article for perl First Paren=>geek