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