Anzeige:
Ergebnis 1 bis 3 von 3

Thema: perl und split machen mich fertig

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.05.2004
    Beiträge
    212

    perl und split machen mich fertig

    hi ich hab ein kleines programm
    Code:
        foreach(@line){
            @split=split("=",$line[$i]);
            $dat{$split[0]}=$split[1];
            chomp(%dat);
            $i++;
        }
         while ( ($owner, $wert) = each %dat ) {
            @pcs=split(",",$wert);
            $a=0;
             foreach(@pcs){
                @name=split("|",$pcs[$a]);   xxx
                print "$name[0]\n";
    
                $a++;
            }
            print "\n";
    die zeile, die ich mit "xxx" markiert hab, an der komme ich einfach nicht weiter ;(
    wie man sieht lasse ich das array @lines anhand von = in ein hash schreiben, dann lasse ich die werte von dem hash anhand von , nochmal trennen und das ergebnis von dieser trennung möchte ich nochmal trennen, nur leider sehe ich den wald vor lauter bäumen nicht ;( entweder herhalte ich immer die anfangsbuchstaben oder nix ;( kann mir da bitte jemand weiter helfen?
    thx cu SHB

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    Du musst das '|' maskieren, wenn Du es als Delimiter nutzen willst... split erhält als ersten Parameter ein Pattern, mit dem ein Patternmatching ausgeführt wird. [] . | ? * usw. kommen daher eine besondere Bedeutung zu.

    In Deinem Fall müsstest Du also

    Code:
    my @name = split(/\|/,$pcs[$a]);
    machen, um den String am '|' - Zeichen aufzutrennen.

    Hier noch ein Hinweis zum Rest des Programms:

    foreach
    In einer foreach Schleife brauchst du keinen Zähler... im Schleifenblock hast Du immer das aktuelle Array Element in $_ bzw einer von Dir gewählten Variable:

    Code:
    foreach (@lines)
    {
      print;
      #oder
      print $_;
      #oder auch
      my ($Element1,$Element2) = split(/,/);
    }
    oder auch
    Code:
    foreach my $line (@lines)
    {
      print $line;
      #und so weiter....
    }

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.05.2004
    Beiträge
    212
    danke!
    darauf hötte ich auch selber kommen können, aber irgendwie hab ich daran überhaupt nicht dran gedacht, ich hab gedacht es ist ein string und fertig. danke für den anderen tipp, ich werds umbauen

    thx cu SHB

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •