Patrick Andrieu: String Zeilenweise durchlaufen

Beitrag lesen

Hallo Perl!

den Code versteh ich nicht wirklich :-)»»
könntest du den bitte erklären?

Vielleicht kann ich das versuchen (Siechfred kann mich ja korrigieren *g*)...

use strict;
use Data::Dumper;

Pragma (strict), Modul Data::Dumper einbinden.

my $pattern = 'doedel';

Suchmuster in eine Variable speichern

my @lines = <DATA>;

Hier könnte auch: my @lines = <SDTIN>; stehen. Mit DATA kann man aber besser testen, es muss halt am Ende des Skripts ein DATA- Bereich geben.

chomp @lines;

Entferne aus jedem Element vom Array @lines das Newline-Zeichen (\n oder \r oder \r\n, je nach Plattform)

{
  push @lines, 'not found' and last unless grep { /$pattern/ } @lines;

Füge am Ende von @lines ein neues Element mit Wert 'not found' UND beende die Aktion WENN das Suchmuster auf KEIN Element von @lines matcht (unless ist nahezu gleichzusetzen mit dem Gegenteil von if)
and hat niedrigere (oder war das höhere) Prezedenz als ||, jedenfalls kann deswegen hier auf Klammerung verzichtet werden

@lines = map( test($), @lines );

Wende jedem Element von @lines ($_) die Funktion _test() an. @lines wird so mit den (evtl.) geänderten Werten gefüllt. Das greift erst dann, wenn kein »last« (aus der Zeile zuvor) die Aktion abgebrochen hat, also sobald doch das Suchmuster »entdeckt« wurde

sub test {
  local $
= shift; # Hier ist mir das noch nicht klar...
  return $_ .= (/$pattern/ ? '...found!' : '');

return in einer Funktion gibt immer das Ergebnis der letzen Anweisung zurück. Diese ist:

$_ .= (/$pattern/ ? '...found!' : '');

^Zeichenketten verküpfung (entspricht $_ = $_ . "...")

  
  
Zwischen den Klammer ist eine einfache if/else-Abfrage, gleichbedeutend mit:  
  
Wenn Suchausdruck matcht, füge ...found hinzu, sonst nichts (Leerstring).  
  
\--------------------  
[map()](http://de.selfhtml.org/perl/funktionen/listenhashes.htm#map) - perldoc -f map  
[grep()](http://de.selfhtml.org/perl/funktionen/listenhashes.htm#grep) - perldoc -f grep  
[strict](http://de.selfhtml.org/perl/module/standardmodule.htm#pragma_module)  
[return](http://de.selfhtml.org/perl/funktionen/kontrolle.htm#return)  
  

> das sieht auf jedenfall interessant aus!  
  
Sieht nicht aus, ist.  
  
;)  
  
Viele Grüße aus Frankfurt/Main,  
Patrick

-- 
![](http://www.atomic-eggs.com/fuernA.jpg)  
  
\_ - jenseits vom delirium - \_  
  
[[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash](http://www.atomic-eggs.com/)]  
Nichts ist unmöglich? [Doch!](http://www.atomic-eggs.com/cwi/cwi_4.shtml)  
Heute schon ge[gök](http://goek.atomic-eggs.com/goek_goek.html)t?
0 72

String Zeilenweise durchlaufen

Perl Anfänger
  • perl
  1. 0
    Horst
    1. 0
      Perl Anfänger
      1. 0
        Struppi
        1. 0
          Perl Anfänger
          1. 1
            Patrick Andrieu
            1. 0
              Perl Anfänger
              1. 0

                Nachtrag

                Perl Anfänger
              2. 0
                Patrick Andrieu
                1. 0
                  Perl Anfänger
                  1. 0
                    Patrick Andrieu
                    1. 0
                      Perl Anfänger
                      1. 0
                        Patrick Andrieu
                        1. 1
                          Siechfred
                          1. 0
                            Patrick Andrieu
                          2. 0
                            Perl Anfänger
                            1. 0
                              Patrick Andrieu
                              1. 0
                                Patrick Andrieu
                                1. 0
                                  MudGuard
                    2. 0
                      Perl Anfänger
              3. 0
                Struppi
                1. 0
                  Patrick Andrieu
                  1. 0
                    MudGuard
                    1. 0
                      Patrick Andrieu
                      1. 0
                        MudGuard
                        1. 0
                          Patrick Andrieu
                          1. 0
                            MudGuard
                            1. 0
                              Patrick Andrieu
                2. 0
                  Perl Anfänger
                  1. 0
                    Struppi
                    1. 0
                      Perl Anfänger
                      1. 0
                        Patrick Andrieu
                        1. 0
                          Perl Anfänger
                          1. 0
                            Kurt Z
                            1. 0
                              Perl Anfänger
                              1. 0
                                Patrick Andrieu
                              2. 0
                                Kurt Z
                    2. 0
                      Patrick Andrieu
                      1. 0
                        Struppi
                        1. 0
                          Patrick Andrieu
                          1. 0
                            Perl Anfänger
                            1. 0
                              Patrick Andrieu
            2. 0
              Siechfred
              1. 0
                Patrick Andrieu
                1. 0
                  Siechfred
                  1. 0
                    Struppi
                    1. 0
                      Siechfred
                  2. 0
                    Patrick Andrieu
          2. 0

            so in der Art?

            Kurt Z
            1. 0
              Kurt Z
              1. 0
                Perl Anfänger
              2. 0
                Siechfred
                1. 0
                  Kurt Z
                  1. 0
                    Siechfred
                    1. 0
                      Kurt Z
                      1. 0
                        Siechfred
                        1. 0

                          Iterartorvariable

                          Kurt Z
                          1. 0
                            Siechfred
                            1. 0
                              Kurt Z
              3. 0
                Perl Anfänger
                1. 0
                  Kurt Z
                  1. 0
                    Perl Anfänger
                    1. 0
                      Kurt Z
                      1. 0
                        _Perl_ Anfänger ;-)
                        1. 0
                          Kurt Z
                          1. 0
                            Perl Anfänger
                            1. 0
                              Kurt Z
                              1. 0
                                Perl Anfänger
                                1. 0
                                  Siechfred
                                  1. 0
                                    Kurt Z
                                  2. 0
                                    Perl Anfänger
                                2. 0
                                  Kurt Z