Thread Regex ausdrücke und bestimmte Zeile machen Probleme (12 answers)
Opened by orlando2016 at 2015-04-29 19:49

orlando2016
 2015-05-04 21:18
#180931 #180931
User since
2015-04-27
5 Artikel
BenutzerIn
[default_avatar]
Hallo hlubenow,
danke für den Hinweis.
Diese Zeile funktioniert es nicht.
push($h{$b[0]}, $b[$u]);
Es zeigt eine Fehlermeldung an. Sie lautet: Type of arg 1 to push must be array (not hash element) at Beispiel.pl line 24, near "])"
Woran konnte es gelegen haben? Ich habe zuerst versucht den Fehler zu beheben, leider erfolglos. Bitte gib mir noch einen Hinweis, wie ich den Fehler beheben kann. DAnke!
Auch den kleinen Schrittchen prüfte ich, woran es liegen könnte, siehe Kommentar im Programm:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
foreach $i (@a) {
    chomp($i); # chomp the trailing newline, It shows the linenumber
    if ($i eq "") # Search for empty line
    {  
                print "Find empty line $. \n"; #Kontrolle funktioniert, ausser die Angaben der Zeilennummer
        if ($#b >= 1 && $b[1] =~ /Geburtuhrzeit [0-9].[0-9]/)
            {
                print "Find Geburtuhrzeit line $. \n"; # Kontrolle Funktioniert, ich möchte eine festes Datum suchen!, hier wäre zum Beispiel: Geburtuhrzeit 1999.07.31.21.29.53
            $h{$b[0]} = [];
            foreach $u (1 .. $#b) # foreach (startwert..... $#array)
            {
                push ($h{$b[0]},($b[$u])); # push (ARRAY, newLIST), hat nicht geklappt!
            }
        }
        @b = ();
        next;
    }
    push(@b, $i);
}

Mit festem Datum habe ich eingebaut:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
foreach $i (@a)
{
    chomp($i); # chomp the trailing newline, It shows the linenumber
    if ($i =~ /Geburtuhrzeit [0-9].[0-9]/)
    {
                my (undef, $year, $month, $day) = split(/\s|\.|\//, $i); 
                               if (($year == 2010) && ($month == 07) && ($day ==31))
                                 {
           chomp($i);
           print "$i\n";
           print "$.\n";
           print "Find  Geburtuhrzeit with fixed date line $. \n"; #bis hierhin hat es funktioniert, dann geht er nicht in die Forschleife warum??
           foreach $u (1 .. $#b) # foreach (startwert..... $#array)
            {
                if ($i eq "")
                { # Search for empty line
                next;
                print "Find empty line $. \n";
                push ($h{$b[0]},($b[$u])); # push (ARRAY, newLIST)# Klappt nicht!
              }
            }
          }

Danke, wenn ihr mir noch einmal helfen könnt.

modedit Editiert von pq: code-tags hinzugefügt
Last edited: 2015-05-05 13:30:56 +0200 (CEST)

View full thread Regex ausdrücke und bestimmte Zeile machen Probleme