Article View: pl.comp.lang.perl
Article #52561Re: Magiczny parametr.
From: KEyS
Date: Mon, 16 Sep 2013 13:24
Date: Mon, 16 Sep 2013 13:24
60 lines
2107 bytes
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-mailReferences:
<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