Portál AbcLinuxu, 19. dubna 2024 23:35

REPL v Perlu

24.6.2009 19:02 | Přečteno: 945× | programování | poslední úprava: 24.6.2009 22:02

A ještě jednou Perl, tentokrát REPL. REPL je praktická věc, zvlášť při ladění. Zvykl jsem si do některých svých modulů v průběhu vývoje a testování strčit malou funkci, díky které se dá modul v případě potřeby spustit jako běžný perlový skript a zobrazí REPL, ve kterém si s ním můžu hrát:

package Foo;

use Modern::Perl;
use Moose;

sub hello
{
    say "Foo.";
}

sub run
{
    use Devel::REPL;
    use Foo;
    my $repl = new Devel::REPL;
    $repl->load_plugin($_) for qw/History Refresh LexEnv/;
    $repl->run;
}

run() if not caller();

1;

Foo je běžný modul:

$ perl -MFoo -e "Foo->hello"
Foo.

Zároveň se ale dá spustit jako skript, pro účely testování:

$ perl Foo.pm 
$ my $f = new Foo;
Foo=HASH(0xa6d1e0)
$ $f->hello;
Foo.
1

Pěkné je, že když v modulu udělám nějakou změnu, nemusím vůbec ukončit REPL. Module::Refresh si změny všimne a při dalším příkazu se už použije nová verze kódu. Krása.

       

Hodnocení: 75 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

24.6.2009 21:37 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: REPL v Perlu
Odpovědět | Sbalit | Link | Blokovat | Admin
Pěkné, ale časem je užitečnější z toho "hraní" rovnou dělat testy.
In Ada the typical infinite loop would normally be terminated by detonation.
zoul avatar 24.6.2009 22:05 zoul | skóre: 43 | blog: | Boskovice
Rozbalit Rozbalit vše Re: REPL v Perlu
Jasně, testy určitě. Tohle se hodí, když mi něco neběhá správně (třeba spadne test) a já potřebuju příslušný kód pohodlně odladit. Ve funkci run mívám nachystaný i testovací kód (vytvoření základních objektů nebo prostředí a podobně), takže stačí příkaz perl Modul.pm a můžu se v tom začít interaktivně šťourat.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.