Frage zu grep

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(/:/, [at] list))[1];
Da bekomme ich aber einen Syntaxfehler.


Danke,
Reinhard
Reinhard Pagitsch [ Mi, 16 August 2006 09:10 ] [ ID #1433197 ]

Re: Frage zu grep

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(/:/, [at] list))[1];
> Da bekomme ich aber einen Syntaxfehler.
>

Ich nicht:

#!/usr/bin/perl -w
use strict;
my [at] bla = qw(fasel lalala: weißnich: düdeldü);
my $foo= (grep /:/, [at] bla)[1];
print "$foo\n";
Christian Kirsch [ Mi, 16 August 2006 09:42 ] [ ID #1433198 ]

Re: Frage zu grep

Christian Kirsch wrote:
> Reinhard Pagitsch schrieb:
>> Hallo Ng,
>>
.......
>>
>
> Ich nicht:
>
> #!/usr/bin/perl -w
> use strict;
> my [at] bla = qw(fasel lalala: weißnich: düdeldü);
> my $foo= (grep /:/, [at] 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.
Reinhard Pagitsch [ Mi, 16 August 2006 10:34 ] [ ID #1433199 ]

Re: Frage zu grep

Reinhard Pagitsch schrieb:
> Christian Kirsch wrote:
>> Reinhard Pagitsch schrieb:
>>> Hallo Ng,
>>>
> ......
>> Ich nicht:
>>
>> #!/usr/bin/perl -w
>> use strict;
>> my [at] bla = qw(fasel lalala: weißnich: düdeldü);
>> my $foo= (grep /:/, [at] 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?
Christian Kirsch [ Mi, 16 August 2006 10:45 ] [ ID #1433200 ]

Re: Frage zu grep

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

> $tmp=(grep(/:/, [at] 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
Mirco Wahab [ Mi, 16 August 2006 10:42 ] [ ID #1433201 ]

Re: Frage zu grep

* 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(/:/, [at] 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 ( [at] 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
Christian Lackas [ Mi, 16 August 2006 14:05 ] [ ID #1433204 ]

Re: Frage zu grep

"Christian Lackas" <delta [at] lackas.net> schrieb im Newsbeitrag
news:20060816T120218 [at] 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(/:/, [at] 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 ( [at] 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
KWittrock [ Sa, 19 August 2006 15:53 ] [ ID #1436729 ]

Re: Frage zu grep

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

Hallo Klaus,

> > > $tmp=(grep(/:/, [at] 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 ( [at] 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 ( [at] 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
Christian Lackas [ Mo, 21 August 2006 13:20 ] [ ID #1438732 ]
Perl » de.comp.lang.perl.misc » Frage zu grep

Vorheriges Thema: Re: [cpan] install Net::SSLeay
Nächstes Thema: Re: [cpan] install Net::SSLeay