🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
8 messages
8 total messages Started by Sl Sun, 22 May 2011 19:58
Perl cwiczenia...
#52224
Author: Sl
Date: Sun, 22 May 2011 19:58
20 lines
1592 bytes
Cześć!

 Pewnie było ale google milczy albo źle zadaję pytanie...

Wziąłem o ręki książkę "Perl. Ćwiczenia" K.Juszkiewicza i przeglądam
referencje. Znalazłem na stronie 54 poniższy kod który u mnie nie
działa... W związku z tym mam pytanko czy da się użyć takiej konstrukcji
 perlu aby sprawdzić wartość zmiennej o nazwie będącej wartością
zmiennej nazwa_zmiennej?

#v+
#!/usr/bin/perl
$liczba_dni = 30;
$nazwa_zmiennej = "liczba_dni";
print $$nazwa_zmiennej, "\n";
#v-

-- 
Pozr.
sl@er
Re: Perl cwiczenia...
#52225
Author: Adam Osuchowski
Date: Sun, 22 May 2011 20:03
19 lines
1339 bytes
Sl@eR wrote:
> Wziąłem o ręki książkę "Perl. Ćwiczenia" K.Juszkiewicza i przeglądam
> referencje. Znalazłem na stronie 54 poniższy kod który u mnie nie
> działa...
> 
> #v+
> #!/usr/bin/perl
> $liczba_dni = 30;
> $nazwa_zmiennej = "liczba_dni";
> print $$nazwa_zmiennej, "\n";
> #v-

Jak nie działa, jak działa? Masz jakiś komunikat o błędzie?

> W związku z tym mam pytanko czy da się użyć takiej konstrukcji
> perlu aby sprawdzić wartość zmiennej o nazwie będącej wartością
> zmiennej nazwa_zmiennej?

No właśnie mniej więcej w ten sposób.
Re: Perl cwiczenia...
#52226
Author: Sl
Date: Sun, 22 May 2011 20:12
39 lines
1837 bytes
W dniu 2011-05-22 22:03, Adam Osuchowski pisze:
>> #v+
>> #!/usr/bin/perl
>> $liczba_dni = 30;
>> $nazwa_zmiennej = "liczba_dni";
>> print $$nazwa_zmiennej, "\n";
>> #v-
> 
> Jak nie działa, jak działa? Masz jakiś komunikat o błędzie?
> 

Faktycznie działa, sorry za spam :) Ja miałem lekka modyfikację którą
nie usunąłem ze skryptu testując:

#v+
#!/usr/bin/perl
my $liczba_dni = 30;
my $nazwa_zmiennej = "liczba_dni";
print $$nazwa_zmiennej, "\n";
#v-

I na wyjściu otrzymywałem coś takiego:

$ ./test.pl

$

Poza tym jak dodaję use strict i use warnings to powyższy kod zwraca
komunikat:

$ ./test.pl
Can't use string ("liczba_dni") as a SCALAR ref while "strict refs" in
use at ./test.pl line 6.

Pytanko więc jak powinien wyglądać ten kod aby się nie czepiał ;)

-- 
pzdr.
sl@er
Re: Perl cwiczenia...
#52223
Author: Adam Osuchowski
Date: Sun, 22 May 2011 20:48
13 lines
1162 bytes
Sl@eR wrote:
> Pytanko więc jak powinien wyglądać ten kod aby się nie czepiał ;)

Jedynie wyłączyć strict refs:

#v+
use strict;
no strict 'refs';
#v-

i zadeklarować tą zmienną jako `our' zamiast jako `my'. Działanie stricta
m.in. zabezpiecza przed referencjami symbolicznymi więc jest to efekt
jak najbardziej zamierzony.
Re: Perl cwiczenia...
#52228
Author: hubert depesz lubaczewski
Date: Mon, 23 May 2011 07:32
13 lines
1391 bytes
On 2011-05-22, Sl@eR <future_with_off_spam@nospam.com> wrote:
> Pytanko więc jak powinien wyglądać ten kod aby się nie czepiał ;)

nie używać takich konstrukcji. są złe, bardzo złe. jeśli książka poleca
stosowanie symbolicznych referencji, to należy ją zasadniczo olać.

http://stackoverflow.com/questions/1298035/how-do-i-use-symbolic-references-in-perl

depesz

-- 
The best thing about modern society is how easy it is to avoid contact with it.
                                                             http://depesz.com/
Re: Perl cwiczenia...
#52227
Author: Adam Osuchowski
Date: Mon, 23 May 2011 10:42
7 lines
1248 bytes
hubert depesz lubaczewski wrote:
> nie używać takich konstrukcji. są złe, bardzo złe. jeśli książka poleca
> stosowanie symbolicznych referencji, to należy ją zasadniczo olać.

Skąd wiesz, że poleca? Może tylko opisuje jako jeden z istniejących
elementów języka. Oficjalny manual Perla również zawiera jakieś przykłady
dotyczące symbolicznych referencji. Jego też zalecałbyś olać?
Re: Perl cwiczenia...
#52229
Author: Stachu 'Dozzie' K.
Date: Mon, 23 May 2011 10:44
15 lines
1858 bytes
On 2011-05-23, Adam Osuchowski <someone@somewhere.com> wrote:
> hubert depesz lubaczewski wrote:
>> nie używać takich konstrukcji. są złe, bardzo złe. jeśli książka poleca
>> stosowanie symbolicznych referencji, to należy ją zasadniczo olać.
>
> Skąd wiesz, że poleca? Może tylko opisuje jako jeden z istniejących
> elementów języka. Oficjalny manual Perla również zawiera jakieś przykłady
> dotyczące symbolicznych referencji. Jego też zalecałbyś olać?

Dokumentacja to dokumentacja. Ale książka z ćwiczeniami dla Perla jednak
nie powinna uczyć złych nawyków.

-- 
Secunia non olet.
Stanislaw Klekot
Re: Perl cwiczenia...
#52230
Author: Marcin Kasperski
Date: Mon, 23 May 2011 11:09
23 lines
1866 bytes
hubert depesz lubaczewski <depesz@depesz.com> writes:

> On 2011-05-22, Sl@eR <future_with_off_spam@nospam.com> wrote:
>> Pytanko więc jak powinien wyglądać ten kod aby się nie czepiał ;)
>
> nie używać takich konstrukcji. są złe, bardzo złe. jeśli książka poleca
> stosowanie symbolicznych referencji, to należy ją zasadniczo olać.
>
> http://stackoverflow.com/questions/1298035/how-do-i-use-symbolic-references-in-perl

Nie byłbym aż tak dogmatyczny, o ile w "poważnym" kodzie faktycznie
lepiej tego nie tykać, o tyle w jakichś skryptach ad hoc możliwość -
powiedzmy - wywołania procedury o nazwie zadanej jako parametr skryptu
czasem się przydaje.

Co do zapisu: zakładając pracę w trybie strict (zdecydowanie zalecana),
trzeba ten tryb na chwilę wyłączyć:

    {
        no strict 'refs';
        # I tu ten brzydki kod
    }
        
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