Perlvariable für EXPR bei if, while, unless ,until
Perlvariable für EXPR bei if, while, unless ,until
am 15.09.2006 11:43:59 von Frank Kulow
Hallo NG,
Perl merkt sich ja so vieles (d.h. schreibfaul sein, ist erlaubt (wenn
auch oft gefährlich)).
Ich vermisse (nur) das Ergebnis der EXPR der letzten if-, while-,
unless-, until- Abfrage.
Gibt es das nicht, oder habe ich es übersehen.
if(subxy())
{
...
#hier könnte ich dann oft so was wie $& beim match gebrauchen
...
}
Frank
Re: Perlvariable fürEXPR bei if, while, unless,until
am 15.09.2006 12:05:09 von hjp-usenet2
On 2006-09-15 09:43, Frank Kulow wrote:
> Perl merkt sich ja so vieles (d.h. schreibfaul sein, ist erlaubt (wenn
> auch oft gefährlich)).
> Ich vermisse (nur) das Ergebnis der EXPR der letzten if-, while-,
> unless-, until- Abfrage.
>
> Gibt es das nicht, oder habe ich es übersehen.
Ich glaube, das gibt es wirklich nicht. Ist mir noch nie abgegangen.
> if(subxy())
> {
> ...
> #hier könnte ich dann oft so was wie $& beim match gebrauchen
> ...
> }
if(my $r = subxy())
{
...
do_something_with($r);
...
}
hp
--
_ | Peter J. Holzer | > Wieso sollte man etwas erfinden was nicht
|_|_) | Sysadmin WSR | > ist?
| | | hjp@hjp.at | Was sonst wäre der Sinn des Erfindens?
__/ | http://www.hjp.at/ | -- P. Einstein u. V. Gringmuth in desd
Re: Perlvariable für EXPR bei if, while, unless ,until
am 15.09.2006 14:51:26 von Ferry Bolhar
Frank Kulow:
> Perl merkt sich ja so vieles (d.h. schreibfaul sein, ist erlaubt (wenn
> auch oft gefährlich)).
> Ich vermisse (nur) das Ergebnis der EXPR der letzten if-, while-,
> unless-, until- Abfrage.
>
> Gibt es das nicht, oder habe ich es übersehen.
>
> if(subxy())
> {
> ...
> #hier könnte ich dann oft so was wie $& beim match gebrauchen
> ...
> }
if (my $EXPR = subxy())
{
...
#hier kannst du $EXPR verwenden
...
}
Geht genauso bei while/until/unless.
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at
Re: Perlvariable für EXPR bei if, while, unless ,until
am 15.09.2006 15:24:19 von Mirco Wahab
Thus spoke Frank Kulow (on 2006-09-15 11:43):
> Perl merkt sich ja so vieles (d.h. schreibfaul sein, ist erlaubt
> (wenn auch oft gefährlich)).
> Ich vermisse (nur) das Ergebnis der EXPR der
> letzten if-, while-, unless-, until- Abfrage.
> Gibt es das nicht, oder habe ich es übersehen.
Gibt es nicht. Wenn Du es wirklich so "knapp"
haben wills, drücke halt 'if', 'while' etc.
als 'for' aus (wenn es geht):
...
sub subxy_1() { my @list = (1,2,3); @list; }
sub subxy_2() { my $num = 22; $num; }
for( subxy_1() ) { # statt if( subxy_1() )
print;
}
for( subxy_2() ) {
print;
}
...
=> 'Here are the places where Perl will assume $_ ' ...
http://perldoc.perl.org/perlvar.html
Mir ist der Sinn Deines Vorhabens nicht
ganz geläufig. Möchtest Du verhindern,
dass Andere (oder Du in zwei Wochen)
Deinen Quelletxt verstehen?
Dafür gibt es doch ACME::DWIM ;-)
(http://search.cpan.org/~dconway/Acme-Bleach-1.12/lib/Acme/D WIM.pm)
Viele Grüße
Mirco
Re: Perlvariable für EXPR bei if, while, unless ,until
am 15.09.2006 16:30:14 von Frank Seitz
Mirco Wahab wrote:
> Thus spoke Frank Kulow (on 2006-09-15 11:43):
>>
>>Perl merkt sich ja so vieles (d.h. schreibfaul sein, ist erlaubt
>>(wenn auch oft gefährlich)).
>>Ich vermisse (nur) das Ergebnis der EXPR der
>>letzten if-, while-, unless-, until- Abfrage.
>>Gibt es das nicht, oder habe ich es übersehen.
[...]
> Mir ist der Sinn Deines Vorhabens nicht
> ganz geläufig. Möchtest Du verhindern,
> dass Andere (oder Du in zwei Wochen)
> Deinen Quelletxt verstehen?
Zum einen das. Zum anderen bleibt unklar, ob der boolsche Wert
oder der eigentliche Wert des Ausdrucks gemeint ist.
Da letzterer auch nicht-skalar sein kann, sehe ich ohnehin
nicht, wie das gehen sollte.
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: Perlvariable für EXPR bei if, while, unless ,until
am 15.09.2006 17:09:57 von Frank Kulow
>
> Mir ist der Sinn Deines Vorhabens nicht
> ganz geläufig.
reine Schreibfaulheit, Einsparung einer Variablendeklaration
Möchtest Du verhindern,
> dass Andere (oder Du in zwei Wochen)
> Deinen Quelletxt verstehen?
Dann müßte man ja $_ auch abschaffen.
Schönes Wochenende
Frank
Re: Perlvariable für EXPR bei if, while, unless ,until
am 15.09.2006 18:05:57 von Ferry Bolhar
Frank Kulow:
> Möchtest Du verhindern, dass Andere (oder Du in zwei Wochen)
> Deinen Quelletxt verstehen?
>
> Dann müßte man ja $_ auch abschaffen.
IIRC wird in PBP ausdrücklich empfohlen, auf die Verwendung
von $_ eben aus diesem Grund zu verzichten. Für mich absolut
nachvollziehbar.
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at
Re: Perlvariable fürEXPR bei if, whi le, unless,until
am 15.09.2006 20:52:07 von hjp-usenet2
On 2006-09-15 15:09, Frank Kulow wrote:
>> Möchtest Du verhindern, dass Andere (oder Du in zwei Wochen) Deinen
>> Quelletxt verstehen?
>
> Dann müÃte man ja $_ auch abschaffen.
Der Meinung war ich als Perl-Anfänger auch. Mittlerweile bin ich aber
zur Ansicht gekommen, dass wohldosierter Einsatz von $_ den Quelltext
lesbarer macht.
hp
--
_ | Peter J. Holzer | > Wieso sollte man etwas erfinden was nicht
|_|_) | Sysadmin WSR | > ist?
| | | hjp@hjp.at | Was sonst wäre der Sinn des Erfindens?
__/ | http://www.hjp.at/ | -- P. Einstein u. V. Gringmuth in desd
Re: Perlvariable für EXPR bei if, while, unless ,until
am 15.09.2006 21:09:22 von Mirco Wahab
Thus spoke Frank Kulow (on 2006-09-15 17:09):
>> Mir ist der Sinn Deines Vorhabens nicht
>> ganz geläufig.
>
> reine Schreibfaulheit, Einsparung einer Variablendeklaration
Du musst natürlich genau prüfen, *was*
als "Resultat" verstanden werden soll
(wie F. Seitz das schon anmerkte).
Die if/while/... machen eine boolsche
"Bewertung" im skalaren Kontext, das
Resultat ist ein skalares "wahr/unwahr" -
insofern wird die Funktionsrückgabe
sowieso zu einem Skalar.
Was Du möchtest, ist vielleicht sowas:
sub sub1() { my @list = (1,2,3); @list; }
sub sub2() { my @list = (); @list; }
sub sub3() { my $scalar = 0; $scalar; }
if ( $_=sub1() ) {
print;
}
else {
print;
}
Aber das ist so 'unperlisch', dass man das besser läßt :-/
>> Möchtest Du verhindern,
>> dass Andere (oder Du in zwei Wochen)
>> Deinen Quelletxt verstehen?
>
> Dann müßte man ja $_ auch abschaffen.
Das $_ hat imho seine Berechtigung, wo es
um traditionelle Idiome geht. Diese haben
die Eigenschaft, dass man sie als solche
sofort erkennt - und erfüllen damit ihren
Zweck und sind sinnvoll.
Viele Grüße
Mirco