Rob: Fehler... aber wo?

hallo zusammen

ich habe da so ein skript geschrieben... leider kam heraus, das folgende Phrase nicht ganz korrekt ist.

if($uebergeben[1] =~ /^movetoend$/)
{
 open(DATEN,"aufgaben.txt");
 @Daten = <DATEN>;
 close(DATEN);
 chomp(@Daten);

open(DATEN,">aufgaben.txt");

$satz = -1;
 for($i = 0; $i < @Daten; $i++)
 {
  if($Daten[$i] =~ /^#0$/ && $satz = -1)
  {
   $satz = $i;
   $i+=2;
  }
  else
  {
   print DATEN "$Daten[$i]\n";
  }
 }

if($satz != -1)
 {
  for($z=$satz;$z<$satz+3;$z++)
  {
   print DATEN "$Daten[$z]\n";
  }
 }
 close(DATEN);
}

weiss jemand warum? finde es nicht, oder ich seh den wald vor lauter bäumen nicht mehr ...

greeze un dmerci rob

  1. hallo zusammen

    Tach,

    ich habe da so ein skript geschrieben... leider kam heraus, das folgende Phrase nicht ganz korrekt ist.

    if($uebergeben[1] =~ /^movetoend$/)
    {
    open(DATEN,"aufgaben.txt");
    @Daten = <DATEN>;
    close(DATEN);
    chomp(@Daten);

    open(DATEN,">aufgaben.txt");

    $satz = -1;
    for($i = 0; $i < @Daten; $i++)
    {
      if($Daten[$i] =~ /^#0$/ && $satz = -1)
      {
       $satz = $i;
       $i+=2;
      }
      else
      {
       print DATEN "$Daten[$i]\n";
      }
    }

    if($satz != -1)
    {
      for($z=$satz;$z<$satz+3;$z++)
      {
       print DATEN "$Daten[$z]\n";
      }
    }
    close(DATEN);
    }

    weiss jemand warum? finde es nicht, oder ich seh den wald vor lauter bäumen nicht mehr ...

    Nein, wie sollen wir wissen, was nicht korrekt ist, wenn Du uns nicht sagst, was das script überhaupt tun soll?
    Oder gibt es irgendwelche Fehlermeldungen?
    Offensichtlich nicht, denn Du hast keine erwähnt.

    Andreas

    1. Nein, wie sollen wir wissen, was nicht korrekt ist, wenn Du uns nicht sagst, was das script überhaupt tun soll?
      Oder gibt es irgendwelche Fehlermeldungen?
      Offensichtlich nicht, denn Du hast keine erwähnt.

      es gibt einen internel server error... das skript ansich sollte glaube ich schon einigermassen funktionieren, aber wollte fragen, ob ihr irgend einen syntax- fehler findet....

      merci
      rob

      1. Nein, wie sollen wir wissen, was nicht korrekt ist, wenn Du uns nicht sagst, was das script überhaupt tun soll?
        Oder gibt es irgendwelche Fehlermeldungen?
        Offensichtlich nicht, denn Du hast keine erwähnt.

        es gibt einen internel server error... das skript ansich sollte glaube ich schon einigermassen funktionieren, aber wollte fragen, ob ihr irgend einen syntax- fehler findet....

        und was steht dann im error.log des Webservers?

        merci
        rob

        1. Nein, wie sollen wir wissen, was nicht korrekt ist, wenn Du uns nicht sagst, was das script überhaupt tun soll?
          Oder gibt es irgendwelche Fehlermeldungen?
          Offensichtlich nicht, denn Du hast keine erwähnt.

          es gibt einen internel server error... das skript ansich sollte glaube ich schon einigermassen funktionieren, aber wollte fragen, ob ihr irgend einen syntax- fehler findet....

          und was steht dann im error.log des Webservers?

          hi,

          wahrscheinlich steht das:

          Found = in conditional, should be == at ./xx.pl line 15.
          Can't modify logical and (&&) in scalar assignment at ./xx.pl line 16, near "1)
            "
          Execution of ./xx.pl aborted due to compilation errors.

          ist ja nur eine vermutung. und die lösung ist auch schon parat ;-)

          grüssle
          bjoern

  2. hi,

    if($uebergeben[1] =~ /^movetoend$/)
    {
    open(DATEN,"aufgaben.txt");
    @Daten = <DATEN>;
    close(DATEN);
    chomp(@Daten);

    open(DATEN,">aufgaben.txt");

    $satz = -1;
    for($i = 0; $i < @Daten; $i++)
    {
      if($Daten[$i] =~ /^#0$/ && $satz = -1)
      {
       $satz = $i;
       $i+=2;
      }
      else
      {
       print DATEN "$Daten[$i]\n";

    es könnte daran liegen. lieber:
      print DATEN $Daten[$i]."\n";

    }
    }

    if($satz != -1)
    {
      for($z=$satz;$z<$satz+3;$z++)
      {
       print DATEN "$Daten[$z]\n";

    hier natürlich gleich.

    }
    }
    close(DATEN);
    }

    weiss jemand warum? finde es nicht, oder ich seh den wald vor lauter bäumen nicht mehr ...

    naja. Andreas hat schon recht: die Fehlermeldung würde weiterhelfen.

    gruss
    bjoern

    1. tag nochmal,

      hab's gefunden.

      if($uebergeben[1] =~ /^movetoend$/)
      {
      open(DATEN,"aufgaben.txt");
      @Daten = <DATEN>;
      close(DATEN);
      chomp(@Daten);

      open(DATEN,">aufgaben.txt");

      $satz = -1;
      for($i = 0; $i < @Daten; $i++)
      {
        if($Daten[$i] =~ /^#0$/ && $satz = -1)

      machst du hier besser:
        if($Daten[$i] =~ /^#0$/ && $satz eq -1)

      {
         $satz = $i;
         $i+=2;
        }
        else
        {
         print DATEN "$Daten[$i]\n";

      es könnte daran liegen. lieber:
        print DATEN $Daten[$i]."\n";

      }
      }

      if($satz != -1)
      {
        for($z=$satz;$z<$satz+3;$z++)
        {
         print DATEN "$Daten[$z]\n";

      hier natürlich gleich.

      }
      }
      close(DATEN);
      }

      weiss jemand warum? finde es nicht, oder ich seh den wald vor lauter bäumen nicht mehr ...

      naja. Andreas hat schon recht: die Fehlermeldung würde weiterhelfen.

      gruss
      bjoern

      1. ups. t'schuldigung. da war doch ein fehler in der korrektur.

        if($uebergeben[1] =~ /^movetoend$/)
        {
        open(DATEN,"aufgaben.txt");
        @Daten = <DATEN>;
        close(DATEN);
        chomp(@Daten);

        open(DATEN,">aufgaben.txt");

        $satz = -1;
        for($i = 0; $i < @Daten; $i++)
        {
          if($Daten[$i] =~ /^#0$/ && $satz = -1)

        machst du hier besser:
          if($Daten[$i] =~ /^#0$/ && $satz == -1)
        oder:
          if($Daten[$i] =~ /^#0$/ && $satz eq "-1")

        {
           $satz = $i;
           $i+=2;
          }
          else
          {
           print DATEN "$Daten[$i]\n";

        es könnte daran liegen. lieber:
          print DATEN $Daten[$i]."\n";

        }
        }

        if($satz != -1)
        {
          for($z=$satz;$z<$satz+3;$z++)
          {
           print DATEN "$Daten[$z]\n";

        hier natürlich gleich.

        }
        }
        close(DATEN);
        }

        weiss jemand warum? finde es nicht, oder ich seh den wald vor lauter bäumen nicht mehr ...

        naja. Andreas hat schon recht: die Fehlermeldung würde weiterhelfen.

        gruss

        bjoern

  3. hallo zusammen

    if($uebergeben[1] =~ /^movetoend$/)
    {
    open(DATEN,"aufgaben.txt");
    @Daten = <DATEN>;
    close(DATEN);
    chomp(@Daten);

    open(DATEN,">aufgaben.txt");

    $satz = -1;
    for($i = 0; $i < @Daten; $i++)
    {
      if($Daten[$i] =~ /^#0$/ && $satz = -1)

    hab es hier nun mit == anstatt = versucht, und oh wunder ;-) es hat geklappt...

    {
       $satz = $i;
       $i+=2;
      }
      else
      {
       print DATEN "$Daten[$i]\n";
      }
    }

    if($satz != -1)
    {
      for($z=$satz;$z<$satz+3;$z++)
      {
       print DATEN "$Daten[$z]\n";
      }
    }
    close(DATEN);
    }

    merci vilmol für eure hilfe

    grüsse
    rob

    1. Hi,

      if($uebergeben[1] =~ /^movetoend$/)

      wenn Du mit einer konstanten Zeichenkette vergleichen willst,
      dann ist der Einsatz von regular expressions Overkill.

      if($Daten[$i] =~ /^#0$/ && $satz = -1)
      hab es hier nun mit == anstatt = versucht, und oh wunder ;-)
      es hat geklappt...

      sehnsewohl, ein Vergleich ist halt doch etwas anderes als eine
      Zuweisung.

      Viele Grüße
            Michael

  4. Hallo auch,
    ich muss jetzt auch noch meinen Senf dazu geben:

    for($i = 0; $i < @Daten; $i++)
    hm. fragwürdig. schreib lieber:
     for($i = 0; $i < $#Daten; $i++)

    Gruss,
    nose.

    hallo zusammen

    ich habe da so ein skript geschrieben... leider kam heraus, das folgende Phrase nicht ganz korrekt ist.

    if($uebergeben[1] =~ /^movetoend$/)
    {
    open(DATEN,"aufgaben.txt");
    @Daten = <DATEN>;
    close(DATEN);
    chomp(@Daten);

    open(DATEN,">aufgaben.txt");

    $satz = -1;
    for($i = 0; $i < @Daten; $i++)
    {
      if($Daten[$i] =~ /^#0$/ && $satz = -1)
      {
       $satz = $i;
       $i+=2;
      }
      else
      {
       print DATEN "$Daten[$i]\n";
      }
    }

    if($satz != -1)
    {
      for($z=$satz;$z<$satz+3;$z++)
      {
       print DATEN "$Daten[$z]\n";
      }
    }
    close(DATEN);
    }

    weiss jemand warum? finde es nicht, oder ich seh den wald vor lauter bäumen nicht mehr ...

    greeze un dmerci rob