Thread View: pl.comp.lang.perl
5 messages
5 total messages
Started by KEyS
Sat, 14 Sep 2013 16:00
Magiczny parametr.
Author: KEyS
Date: Sat, 14 Sep 2013 16:00
Date: Sat, 14 Sep 2013 16:00
34 lines
513 bytes
513 bytes
Witam, mam problem "jak napisać procedurę obsługującą parametr magiczny?" ma działać jak np. chomp: chomp -> modyfikuje $_ chomp($_) działa tak samo. gdy zrobię: sub X($){ my $S=shift; print $S } i $_="Ala ma kota"; wywołanie: X; powinno wypisać "Ala ma kota". sub X(\$){ my $S=shift; $$S='x'; } dla $_ j.w. X; print "$_" -> 'x' pozdrawiam Eustachy Kruczała PS. Może ktoś wie, jak nazwać ten problem ,żeby w GOOGLE znaleźć?
Re: Magiczny parametr.
Author: "Stachu 'Dozzie'
Date: Sat, 14 Sep 2013 15:52
Date: Sat, 14 Sep 2013 15:52
13 lines
321 bytes
321 bytes
On 2013-09-14, KEyS <key_studio@wp.pl> wrote: > Witam, > mam problem "jak napisaæ procedurê obs³uguj±c± parametr magiczny?" > > ma dzia³aæ jak np. chomp: > chomp -> modyfikuje $_ > chomp($_) dzia³a tak samo. No i w czym masz w ogóle problem? $_ to zmienna globalna. -- Secunia non olet. Stanislaw Klekot
Re: Magiczny parametr.
Author: "Stachu 'Dozzie'
Date: Sun, 15 Sep 2013 22:22
Date: Sun, 15 Sep 2013 22:22
62 lines
1307 bytes
1307 bytes
On 2013-09-15, KEyS <key_studio@wp.pl> wrote: > U¿ytkownik Stachu 'Dozzie' K. napisa³: >> On 2013-09-14, KEyS <key_studio@wp.pl> wrote: >>> Witam, >>> mam problem "jak napisaæ procedurê obs³uguj±c± parametr magiczny?" >>> >>> ma dzia³aæ jak np. chomp: >>> chomp -> modyfikuje $_ >>> chomp($_) dzia³a tak samo. >> >> No i w czym masz w ogóle problem? $_ to zmienna globalna. >> > i co z tego? Ano to, ¿e tej zmiennej u¿ywa siê jak ka¿dej innej. > dla > > sub S(\$){ > my $S=shift; #ref($PAR) > $$S; #$PAR > } Tak na boku: zdajesz sobie sprawê z tego, ¿e $_[0] jest aliasem parametru wywo³ania i mo¿na to wykorzystaæ? > 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; No to czemu tej zmiennej nie ustawisz? Oczekujesz voodoo? > Przy funkcji nie prototypowanej (innej) te¿ nie dzia³a, np: > > sub X{ > my $S=shift; > print "$S\n"; > } > > $_11; > > > Wywo³anie: > > X; > > powinno wypisaæ 1111, nie robi nic. No zgadza siê (oprócz wypisania pustej linii). A u¿ywasz w ogóle w tej funkcji $_? -- Secunia non olet. Stanislaw Klekot
Re: Magiczny parametr.
Author: KEyS
Date: Sun, 15 Sep 2013 23:37
Date: Sun, 15 Sep 2013 23:37
49 lines
851 bytes
851 bytes
U¿ytkownik Stachu 'Dozzie' K. napisa³: > On 2013-09-14, KEyS <key_studio@wp.pl> wrote: >> Witam, >> mam problem "jak napisaæ procedurê obs³uguj±c± parametr magiczny?" >> >> ma dzia³aæ jak np. chomp: >> chomp -> modyfikuje $_ >> chomp($_) dzia³a tak samo. > > 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; #$PAR } 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"; } $_11; Wywo³anie: X; powinno wypisaæ 1111, nie robi nic.
Re: Magiczny parametr.
Author: KEyS
Date: Mon, 16 Sep 2013 15:24
Date: Mon, 16 Sep 2013 15:24
62 lines
1078 bytes
1078 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; #$PAR > } > > > 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"; > } > > $_11; > > > 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; $_=$S if($GLOBAL); return $S; } Dzia³a .
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads