GNU/Linux >> Znalost Linux >  >> Linux

20 Killer Perl programovacích tipů pro začátečníky v OS UNIX / Linux

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

Linux
  1. 3 tipy pro tisk s Linuxem

  2. 6 open source nástrojů a tipů pro zabezpečení linuxového serveru pro začátečníky

  3. Jaké jsou dobré knihy o Linuxu/Unixu pro pokročilé uživatele?

  1. 8 tipů pro příkazový řádek Linuxu

  2. Linux killall příkaz pro začátečníky (8 příkladů)

  3. Jak nainstalovat moduly Perl na Linux

  1. MX Linux 17:Upgradovaná distribuce vytvořená pro začátečníky

  2. Linuxový příkaz dir pro začátečníky (10 příkladů)

  3. Příkaz Linux rm vysvětlený pro začátečníky (8 příkladů)