Frage zu grep

Frage zu grep

am 16.08.2006 09:10:13 von Reinhard Pagitsch

Hallo Ng,

grep retuniert ja ein Array. Gibt es nun eine Möglichkeit so wie bei
split direkt auf ein Element der Rückgabe zuzugreifen?
Ich habs mal so versucht:
$tmp=(grep(/:/, @list))[1];
Da bekomme ich aber einen Syntaxfehler.


Danke,
Reinhard

Re: Frage zu grep

am 16.08.2006 09:42:27 von Christian Kirsch

Reinhard Pagitsch schrieb:
> Hallo Ng,
>
> grep retuniert ja ein Array. Gibt es nun eine Möglichkeit so wie bei
> split direkt auf ein Element der Rückgabe zuzugreifen?
> Ich habs mal so versucht:
> $tmp=(grep(/:/, @list))[1];
> Da bekomme ich aber einen Syntaxfehler.
>

Ich nicht:

#!/usr/bin/perl -w
use strict;
my @bla = qw(fasel lalala: weißnich: düdeldü);
my $foo= (grep /:/,@bla)[1];
print "$foo\n";

Re: Frage zu grep

am 16.08.2006 10:34:27 von Reinhard Pagitsch

Christian Kirsch wrote:
> Reinhard Pagitsch schrieb:
>> Hallo Ng,
>>
.......
>>
>
> Ich nicht:
>
> #!/usr/bin/perl -w
> use strict;
> my @bla = qw(fasel lalala: weißnich: düdeldü);
> my $foo= (grep /:/,@bla)[1];
> print "$foo\n";
>

Tja, so funktionierts auch bei mir.


Danke,
Reinhard

--
PM replays nur an reinhard dot pagitsch at isis-papyrus dot com.
Die Adresse im From/Replay To wird nicht gelesen.

Re: Frage zu grep

am 16.08.2006 10:42:11 von Mirco Wahab

Thus spoke Reinhard Pagitsch (on 2006-08-16 09:10):

> $tmp=(grep(/:/, @list))[1];
> Da bekomme ich aber einen Syntaxfehler.

Wie Christian schon sagte, an dem
geposteten Codestück liegt es
wahrscheinlich nicht.

Möglicherweise ein Fehler einige
Zeilen vor dieser Zeile?

Viele Grüße

M. Wahab

Re: Frage zu grep

am 16.08.2006 10:45:19 von Christian Kirsch

Reinhard Pagitsch schrieb:
> Christian Kirsch wrote:
>> Reinhard Pagitsch schrieb:
>>> Hallo Ng,
>>>
> ......
>> Ich nicht:
>>
>> #!/usr/bin/perl -w
>> use strict;
>> my @bla = qw(fasel lalala: weißnich: düdeldü);
>> my $foo= (grep /:/,@bla)[1];
>> print "$foo\n";
>>
>
> Tja, so funktionierts auch bei mir.

Und warum hat es nun in Deinem ersten Versuch *nicht* funktioniert?
Was ist anders? Warum postest Du nicht von Anfang an kompletten Code?

Re: Frage zu grep

am 16.08.2006 14:05:20 von Christian Lackas

* Reinhard Pagitsch [2006-08-16]:

Hallo Reinhard,

> grep retuniert ja ein Array. Gibt es nun eine Möglichkeit so wie bei
> split direkt auf ein Element der Rückgabe zuzugreifen?
> Ich habs mal so versucht:
> $tmp=(grep(/:/, @list))[1];

mal abgesehen davon, dass das so geht, sollte man das trotdem nicht so
machen und lieber eine Schleife benutzen, z.B.

my $tmp;
for (@list) { $tmp = $_, last if /:/}

ist gerade bei großen Listen deutlich effizienter.

Gruß
Christian


--
Zyniker: Schuft, dessen mangelhafte Wahrnehmung Dinge sieht, wie sie
sind, statt wie sie sein sollten.
(Ambrose Bierce, am. Journalist, 1842-1914)
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker

Re: Frage zu grep

am 19.08.2006 15:53:41 von KWittrock

"Christian Lackas" schrieb im Newsbeitrag
news:20060816T120218@lackas.net...
>* Reinhard Pagitsch [2006-08-16]:
>
> Hallo Reinhard,
>
>> grep retuniert ja ein Array. Gibt es nun eine Möglichkeit so wie bei
>> split direkt auf ein Element der Rückgabe zuzugreifen?
>> Ich habs mal so versucht:
>> $tmp=(grep(/:/, @list))[1];
>
> mal abgesehen davon, dass das so geht, sollte man das trotdem nicht so
> machen und lieber eine Schleife benutzen, z.B.
>
> my $tmp;
> for (@list) { $tmp = $_, last if /:/}
>
> ist gerade bei großen Listen deutlich effizienter.
>
Im Prinzip hast du recht, nur liefert dein Kode ein anderes Ergebnis. Du
erhältst die erste Zeile mit :, Reinhard die zweite.

Gruß

Klaus

Re: Frage zu grep

am 21.08.2006 13:20:14 von Christian Lackas

* K. Wittrock [2006-08-19]:

Hallo Klaus,

> > > $tmp=(grep(/:/, @list))[1];
> > mal abgesehen davon, dass das so geht, sollte man das trotdem nicht so
> > machen und lieber eine Schleife benutzen, z.B.
> > my $tmp;
> > for (@list) { $tmp = $_, last if /:/}
> > ist gerade bei großen Listen deutlich effizienter.
> Im Prinzip hast du recht, nur liefert dein Kode ein anderes Ergebnis. Du
> erhältst die erste Zeile mit :, Reinhard die zweite.

dann erweitere das doch einfach entsprechend, z.B.

my$a;for (@list) {$tmp=$_,last,if/:/&&$a++==1}

Gruß
Christian

--
Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst
Urlaub machen.
(Vico Torriani, schweiz. Entertainer, geb.1920)
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker