🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #52561

Re: Magiczny parametr.

#52561
From: KEyS
Date: Mon, 16 Sep 2013 13:24
60 lines
2107 bytes
Użytkownik KEyS napisał:
> Użytkownik Stachu 'Dozzie' K. napisał:
>> No i w czym masz w ogóle problem? $_ to zmienna globalna.
>>

> i co z tego?
>
> dla
>
> sub S(\$){
>    my $S=shift;  #ref($PAR)
>    $$S=11;       #$PAR=11
> }
>
>
> Jak napisać funkcję zwracającą wynik przez parametr. W powyższym
> przykładzie próbowałem to zrobi przez prototyp (\$), ale kiedy nie podam
> parametru - program czepia się.
>
> Wywołanie:
>
>    X;
>
> kończy się błędem.
>
> Chcę żeby $_ po wywołaniu X miało wartość 11;
>
> Przy funkcji nie prototypowanej (innej) też nie działa, np:
>
> sub X{
>    my $S=shift;
>    print "$S\n";
> }
>
> $_=1111;
>
>
> Wywołanie:
>
> X;
>
> powinno wypisać 1111, nie robi nic.
>
Ale się wygłupiłem ;)
Zapomniałem w ogóle o globalności - za bardzo się przejąłem unikaniem 
efektów ubocznych.

Dopiero, gdy w którejś procedurze "zlokalizowałem" $_ i uświadomiłem 
sobie, że przecież ona musi być local, żeby nie zmienić globalnie :).
Procedura ~j.w.

sub X{
   my $S=shift;
   my $GLOBAL=(!$S);
   $S=11;
   $_=$S if($GLOBAL);
   return $S;
}

Działa .
Technical Details
Message-ID: <l170qa$sjn$1@node2.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <l11q61$8c3$1@node1.news.atman.pl> <slrnl391i7.91q.dozzie@jarowit.net> <l159av$8e9$1@node2.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: KEyS <key_studio@wp.pl>
Newsgroups: pl.comp.lang.perl
Subject: Re: Magiczny parametr.
Date: Mon, 16 Sep 2013 15:24:25 +0200
Organization: ATMAN - ATM S.A.
Lines: 62
Message-ID: <l170qa$sjn$1@node2.news.atman.pl>
References: <l11q61$8c3$1@node1.news.atman.pl> <slrnl391i7.91q.dozzie@jarowit.net> <l159av$8e9$1@node2.news.atman.pl>
NNTP-Posting-Host: g146.in.net.pl
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1379337866 29303 89.234.218.146 (16 Sep 2013 13:24:26 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Mon, 16 Sep 2013 13:24:26 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0 SeaMonkey/2.20
In-Reply-To: <l159av$8e9$1@node2.news.atman.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit