Re: Wie deklariert man am besten Wegwerfvariablen?
Re: Wie deklariert man am besten Wegwerfvariablen?
am 06.04.2006 13:16:00 von frank
Erik Braun wrote:
> ich mache mehrere Aufrufe einer Funktion, die eine Liste zurückliefert, bei
> der ich nur an einem Wert interessiert bin, hier im Beispiel der dritte:
>
> my ($tmp1,$tmp2,$wert1) = &prozedur();
> my ($tmp3,$tmp4,$wert2) = &prozedur();
> my ($tmp5,$tmp6,$wert3) = &prozedur();
>
> An $tmp1-6 bin ich nicht interessiert, in Prolog würde ich einfach _ nehmen.
>
> Was ist der gängige Perl-Weg dafür? Vielleicht $wert1..3 vorher
> initialisieren und dann so:
> ($void,$void,$wert1) = &prozedur();
Keine Wegwerfvariable, und ich nehme nicht in Anspruch, einen gängigen
Wert zu kennen, aber warum nicht so:
#!/usr/bin/perl
use warnings;
use strict;
($a, $a, $a) = (1,2,3);
print "A: $a\n";
Gruß, Frank
--
> ich wusste mal einen Befehl, der die Ausgabe auf stdout noch zusätzlich
> in eine Datei umlenken konnte... Bitte helft mir auf die Sprünge.
"kaffee" war es nicht.
Wie deklariert man am besten Wegwerfvariablen?
am 06.04.2006 14:01:03 von unknown
Post removed (X-No-Archive: yes)
Re: Wie deklariert man am besten Wegwerfvariablen?
am 06.04.2006 14:01:10 von Oliver Block
Erik Braun wrote:
> An $tmp1-6 bin ich nicht interessiert, in Prolog würde ich einfach _
> nehmen.
Soweit ich weiß
my (undef, undef, ..., $wert) = ...
Gruss,
Oliver
Re: Wie deklariert man am besten Wegwerfvariablen?
am 06.04.2006 14:31:58 von Karlheinz Weindl
Erik Braun schrieb:
> ich mache mehrere Aufrufe einer Funktion, die eine Liste zurückliefert, bei
> der ich nur an einem Wert interessiert bin, hier im Beispiel der dritte:
>
> my ($tmp1,$tmp2,$wert1) = &prozedur();
> my ($tmp3,$tmp4,$wert2) = &prozedur();
> my ($tmp5,$tmp6,$wert3) = &prozedur();
>
> An $tmp1-6 bin ich nicht interessiert, in Prolog würde ich einfach _ nehmen.
>
> Was ist der gängige Perl-Weg dafür? Vielleicht $wert1..3 vorher
> initialisieren und dann so:
> ($void,$void,$wert1) = &prozedur();
>
(undef,undef,$wert1) = prozedur(); # ist was du meinst
$wert1 = (prozedur())[2]; # ist schöner
($wert1,$wert2,$wert3) = (prozedur())[2,5,8]; # evtl. auch brauchbar
Lies dir doch mal die Doku unter den Stichpunkten 'list context' und
'array slices' durch.
Gruß
Karlheinz
Re: Wie deklariert man am besten Wegwerfvariablen?
am 06.04.2006 14:32:05 von Frank Seitz
Erik Braun wrote:
> ich mache mehrere Aufrufe einer Funktion, die eine Liste zurückliefert, bei
> der ich nur an einem Wert interessiert bin, hier im Beispiel der dritte:
>
> my ($tmp1,$tmp2,$wert1) = &prozedur();
> my ($tmp3,$tmp4,$wert2) = &prozedur();
> my ($tmp5,$tmp6,$wert3) = &prozedur();
>
> An $tmp1-6 bin ich nicht interessiert, in Prolog würde ich einfach _ nehmen.
$wert = (&prozedur)[2];
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: Wie deklariert man am besten Wegwerfvariablen?
am 06.04.2006 15:09:29 von unknown
Post removed (X-No-Archive: yes)
Re: Wie deklariert man am besten Wegwerfvariablen?
am 06.04.2006 15:11:49 von Mirco Wahab
Hallo Erik
> my ($tmp1,$tmp2,$wert1) = &prozedur();
> my ($tmp3,$tmp4,$wert2) = &prozedur();
> my ($tmp5,$tmp6,$wert3) = &prozedur();
>
> An $tmp1-6 bin ich nicht interessiert, in Prolog würde ich einfach _ nehmen.
use constant VALUE => 2;
$wert1 = [prozedur()]->[VALUE];
$wert2 = [prozedur()]->[VALUE];
$wert3 = [prozedur()]->[VALUE];
Viele Grüße
M.
Re: Wie deklariert man am besten Wegwerfvariablen?
am 06.04.2006 15:51:00 von Mirco Wahab
Hallo nochmal,
Anmerkung TMTOWTDI:
>> my ($tmp1,$tmp2,$wert1) = &prozedur();
>> my ($tmp3,$tmp4,$wert2) = &prozedur();
>> my ($tmp5,$tmp6,$wert3) = &prozedur();
neben den von allen anderen gezeigten Methoden
und dem erwähnten:
$wert1 = [prozedur]->[VALUE];
bzw.
$wert1 = [prozedur()]->[VALUE]; # ohne forward declaration
geht auch
$wert1 = ${\prozedur};
bzw.
$wert1 = ${\prozedur()}; # ohne forward declaration
wenn es immer das *letzte* Element der ge-
lieferten Liste aus 'prozedur' sein soll ;-)
Viele Grüße
M.
Re: Wie deklariert man am besten Wegwerfvariablen?
am 06.04.2006 16:13:51 von Mirco Wahab
Hallo nochmal,
Anmerkung TMTOWTDI:
>> >> my ($tmp1,$tmp2,$wert1) = &prozedur();
>> >> my ($tmp3,$tmp4,$wert2) = &prozedur();
>> >> my ($tmp5,$tmp6,$wert3) = &prozedur();
neben den von allen anderen gezeigten Methoden
und dem erwähnten:
$wert1 = [prozedur]->[VALUE];
bzw.
$wert1 = [prozedur()]->[VALUE]; # ohne forward declaration
sollte auch gehen (*1)
$wert1 = ${\prozedur};
bzw.
$wert1 = ${\prozedur()}; # ohne forward declaration
wenn es immer das *letzte* Element der ge-
lieferten Liste aus 'prozedur' sein soll ;-)
Viele Grüße
M.
*1) Vielleicht kann mal jemand
erklären, *warum* das funktioniert ->
das ist ja äquivalent zu:
$wert = ($val1, $val2, $val3);
Re: Wie deklariert man am besten Wegwerfvariablen?
am 07.04.2006 09:23:04 von Mirco Wahab
Hallo Frank
> ($a, $a, $a) = (1,2,3);
> print "A: $a\n";
Das ist ein schöner Aufhänger für
den Perl-Unterschied von 'array'
und 'run time stack '(Liste),
denn:
use strict;
use warnings;
my ($x , @xa);
# man staune
$x = (1, 5, 7);
print "x: $x\n"; # ==> 7
($x) = (1, 5, 7);
print "x: $x\n"; # ==> 1!
@xa = (1,5,7);
($x) = @xa;
print "x: $x\n"; # ==> 1
$x = \(1, 5, 7);
print "x: $$x\n"; # ==> 7
# und natürlich
$x = ${[1, 5, 7]}[2];
print "x: $x\n"; # ==> 7
# bzw.
$x = [1, 5, 7]->[2];
print "x: $x\n"; # ==> 7
# ----
Viele Grüße
M.