Archiwa kategorii: Perl

Perl: komentarze w wyrażeniach regularnych, czyli jak pisać zrozumiałe regexp-y

W przypadku bardziej skomplikowanych zapytań regularnych przydaje się wiedzieć za co odpowiadają poszczególne jego fragmenty. Sztuczką pozwalają to osiągnąć jest skorzystanie z przełącznika x przy wyszukiwaniu oraz komentarzy oznaczonych zwykłym #, wieloliniowości oraz spacji (standardowo ignorowanych właśnie dzięki temu ‚/x’. Spójrzmy na poniższy przykład:

Czytaj dalej Perl: komentarze w wyrażeniach regularnych, czyli jak pisać zrozumiałe regexp-y

Perl: własny moduł

Nazwa pliku powinna być taka sama jak nazwa pakietu ale dodajemy rozszerzenie pm (w naszym przypadku Template.pm). Jeżeli chcemy aby jakieś moduły były użyte w kodzie modułu, umieszczamy ich nazwy po słowie package (wcześniej wpisane dotyczyły by głównego programu czyli pakietu main).

Zwyczajowo, jeżeli chcemy odwołać się do funkcji będącej w module, musimy użyć nazwy modułu, dwukropka oraz nazwy funkcji (np. my $Cos = Template::Function(a,b)). Tą kłopotliwą składnie można uprościć dzięki eksportowaniu nazw funkcji i zmiennych (u nas use Export qw(import) i tablica wyeksportowanych elementów).

Moduł zawsze musimy kończyć wartością 1. Oznaczającą że kod został poprawnie załadowany.

#! /usr/bin/perl
package Template;

use strict;
use warnings;
use Data::Dumper;

use Exporter qw(import);
our @EXPORT_OK = qw(Function);

sub Function
{


}

1

W internecie:
http://www.tutorialspoint.com/perl/perl_modules.htm

Perl i używanie DATA

Jednym z lepszych sposobów umieszczania danych w pliku (gdy mamy dużą ich ilość) jest umieszczenie ich na końcu pliku po napisie __END__. Wtedy możemy skorzystać z wbudowanej tablicy <DATA>  jak poniżej:

#! /usr/bin/perl
use strict;
use warnings;

while (<DATA>) {
    print $_;
}
__END__
data1
data2
data3
data4

Wynik będzie następujący:

root@router:~# perl test_data.pl
data1
data2
data3
data4

Perl – sprawdzanie poprawności argumentów podanych do skryptu

Jednym z podstawowych problemów jest walidacja danych podanych przez użytkownika do skryptu. Walidacji powinny być podane nawet opcje wywołania skryptów. Czyli powinniśmy prawdzić, czy faktycznie dana opcja, której użył użytkownik istnieje. Mój sposób na to jest prosty:

sub usage(); ## prototype of usage() function

usage() if (! GetOptions( …. ))

usage() if ($usage);

ps. tak, stworzyłem podstronę Sztuczki -> Perl, na której będę podsumowywał moje nalepsze praktyki ;). Nie jestem ekspertem ale ma to mi pozwolić lepiej zarządzać moją wiedzą…