Ruzne chovani
Frantisek Darena
darena na akela.mendelu.cz
Úterý Květen 6 10:25:23 MEST 2003
On Tue, 6 May 2003, Jindroush wrote:
> Hi,
>
> vidi nekdo na prvni pohled chybu v nasledujicim kodu? U me to funguje
> okay, kolegovi se to tvari, jako by ten vstupni soubor mel 0 delku,
> proste ten readline asi hned vrati undef. Vim, ze v tech filehandlech
> plavu, ale kdyz me to tady na 5.6.1 (ActiveState 626) chodi a kolegovi v
> praci na 5.6.1 (ActiveState 631?) ne.
>
> sub open()
> {
> my $self = $_[0];
> my $fname = $_[1];
>
> local *FH;
>
> close( FH );
> if( ! open FH, $fname )
> {
> die "Can't open infile '$fname'! ($&)\n";
> }
>
presne to nedokazu vysvetlit, ale nemuze to byt treba tim, ze tady konci
platnost toho FH a ze po skonceni bloku je tam zpatky ta hodnota, co tam
byla pred spustenim podprogramu open? hodnota $$self{handle} neni chapana
jako typeglob, ale jako odkaz. kdybyste pouzil $self->{handle} = *FH, tak
to funguje.
> $$self{ handle } = \*FH;
> }
>
> sub close()
> {
> my $self = $_[0];
> close $self->{ handle };
> }
>
> sub getline()
> {
> my $self = $_[0];
> return readline( *{ $$self{ handle } } );
^^^ hvezdicka neni potreba
> }
jestli jsou tyto funkce soucasti nejake objektove tridy, coz predpokladam,
neni potreba za jejich nazvy psat ty (), protoze v pripade metod neprobiha
kontrola prototypu. jestli to nejsou metody tridy, tak asi pozor.
> --
> Jindroush <jindroush na nospam.seznam.nospam.cz>
> http://jindroush.atari.org - Home of Atari Cartridge Dumping Project
> Remove both 'nospam's from the address to reply.
>
Další informace o konferenci Perl