🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
6 messages
6 total messages Started by Maciek Jurkiewicz Thu, 02 Dec 2010 21:51
zagwozdka
#52075
Author: Maciek Jurkiewicz
Date: Thu, 02 Dec 2010 21:51
28 lines
1639 bytes
hello.

mam coś takiego:

#!/usr/bin/perl
use strict;
use Text::Iconv;

sub konwertuj
{
if(scalar(@_) != 1)
  {
   die "konwertuj: niepoprawna liczba argumentow funkcji (powinna byc 1)";
  }
my $do_skonwertowania=@_;

my  $converter = Text::Iconv->new("ISO8859-2", "UTF-8");
my  $przekonwertowane = $converter->convert($do_skonwertowania);
return $przekonwertowane;
}
print konwertuj("aas")."\n";

zwraca mi 1.
natomiast gdy zamiast zmiennej $do_skonwertowania uzyje zwyklego stringa 
typu "abcdefg" to mi konwertuje.
dlaczego ze zmienna nie działa?

pozdr.
Re: zagwozdka
#52076
Author: Adam Osuchowski
Date: Thu, 02 Dec 2010 21:59
10 lines
1192 bytes
Maciek Jurkiewicz wrote:
> zwraca mi 1.
> natomiast gdy zamiast zmiennej $do_skonwertowania uzyje zwyklego stringa 
> typu "abcdefg" to mi konwertuje.
> dlaczego ze zmienna nie działa?

Bo tablica (w Twoim kodzie konkretnie @_) wartościowana w kontekście
skalarnym (czyli tak jak Ty to robisz) zwraca ilość elementów tablicy
czyli tutaj akurat zawsze 1, bo innych możliwości nie dopuszczasz
wcześniejszym warunkiem.
Re: zagwozdka
#52077
Author: Maciek Jurkiewicz
Date: Thu, 02 Dec 2010 22:07
15 lines
1783 bytes
Adam Osuchowski wrote:
> Maciek Jurkiewicz wrote:
>> zwraca mi 1.
>> natomiast gdy zamiast zmiennej $do_skonwertowania uzyje zwyklego stringa 
>> typu "abcdefg" to mi konwertuje.
>> dlaczego ze zmienna nie działa?
> 
> Bo tablica (w Twoim kodzie konkretnie @_) wartościowana w kontekście
> skalarnym (czyli tak jak Ty to robisz) zwraca ilość elementów tablicy
> czyli tutaj akurat zawsze 1, bo innych możliwości nie dopuszczasz
> wcześniejszym warunkiem.

fakt - zmęczenie :)
dodalem nawiasy i gra
dzięki
Re: zagwozdka
#52078
Author: Kacper Perschke
Date: Fri, 03 Dec 2010 00:07
21 lines
1597 bytes
Dnia 02.12.2010 Maciek Jurkiewicz <mj@USUNTOpwserver.dabrowa.pl> napisał/a:
> [...]
> fakt - zmęczenie :)
> dodalem nawiasy i gra

Nawiasy?

>>> my $do_skonwertowania=@_;
>>> my  $converter = Text::Iconv->new("ISO8859-2", "UTF-8");
>>> my  $przekonwertowane = $converter->convert($do_skonwertowania);

Nie chce mi się patrzeć do dokumentacji Text::Iconv.
Ja bym powyższe trzy linie napisał jak niżej.
1) Jeśli jako argument conwert jest wymagana lista.
   my  $przekonwertowane = Text::Iconv->new("ISO8859-2", "UTF-8")->convert(@_);
2) Jeśli jako argument convert jest wymagana referencja do listy.
   my  $przekonwertowane = Text::Iconv->new("ISO8859-2", "UTF-8")->convert(\@_);

KAcper
-- 
Mail => www.rot13.com
Re: zagwozdka
#52079
Author: Maciek Jurkiewicz
Date: Fri, 03 Dec 2010 21:07
8 lines
1427 bytes
> 1) Jeśli jako argument conwert jest wymagana lista.
>    my  $przekonwertowane = Text::Iconv->new("ISO8859-2", "UTF-8")->convert(@_);
> 
> KAcper

no faktycznie - działa tak samo :)
ale skąd wziąłeś te składnie? W manie do Text::Iconv takowej nie 
widziałem :/
Re: zagwozdka
#52080
Author: Kacper Perschke
Date: Fri, 03 Dec 2010 23:28
24 lines
1915 bytes
Dnia 03.12.2010 Maciek Jurkiewicz <mj@pwserver.dabrowa.pl> napisał:
>> [...]
>>    my  $przekonwertowane = Text::Iconv->new("ISO8859-2", "UTF-8")->convert(@_);
>> [...]
> [...]
> ale skąd wziąłeś te składnie? W manie do Text::Iconv takowej nie widziałem :/

Text::Iconv->new("ISO8859-2", "UTF-8") tworzy obiekt na którym wywołujemy metodę
'convert'. Wynik tej metody zostaje wpisany do skalara $przekonwertowane.

Jeśli właściwie rozumiem Perl internals to po skończeniu tej linii nie ma już
nikogo kto by trzymał referencje do powołanego przez nas obiektu więc zostanie
on uprzątnięty (flushed).

Jak się trochę obiektowo popisze w Perlu (moje ostatnie 6 lat) to takie
konstrukcje same przychodzą pod palce.

BTW pochwalę się, że wyniki tych sześciu lat w CVS są czytane przez różnych
ludzi i od paru osób słyszłem, że mój kod się po prostu czyta, a nie nad nim
zastanawia.

KAcper
-- 
Mail => www.rot13.com
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