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