Sebastian Nagel: Offsetadessen der Dateizeilen einlesen

Hi Leute, ich hab ein Problem mit einem meiner Scripts.
Ich versuche mittels dieses Codes die Offsetnummern der Zeilen einer Datei einzulesen:

open(DATAIN, "<../guest.data");
 @Daten = <DATAIN>;
 $hexoffset[0] = tell(DATAIN);
 while(<DATAIN>)
  {
  $i++;
  $hexoffset[$i] = tell(DATAIN);
  }
 close(DATAIN);

Das Problem ist nur, dass danach der Array nichts enthält (bzw. nur die Zelle Nr. 0 hat danach einen zugewiesenen Wert)

Der Beispiel-Code von Self-HTML klappt auch nicht - der Server bringt wiedermal den vielsagenden Fehler: a Error ocurred....

Hier noch mal kurz der Beispielcode, damit ihr nicht zu lange suchen müßt:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $Datei = "/usr/info/readme.txt";
my @Zeilenanfaenge = "";
open(DATEI, "<$Datei") || die "$Datei: $!";
$Zeilenanfaenge[0] = tell(DATEI);
my $i = 0;
while(<DATEI>) {
   $i++;
   $Zeilenanfaenge[$i] = tell(DATEI);
}
close(DATEI);
$i = 1;
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Testausgabe</title></head><body>\n";
foreach (@Zeilenanfaenge) {
   print "Zeile $i beginnt in der Datei bei Offset $_<br>\n";
   $i++;
}
print "</body></html>\n";

  1. Hi Leute, ich hab ein Problem mit einem meiner Scripts.
    Ich versuche mittels dieses Codes die Offsetnummern der Zeilen einer Datei einzulesen:

    open(DATAIN, "<../guest.data");
     @Daten = <DATAIN>;
     $hexoffset[0] = tell(DATAIN);

    Dir ist die Funktion von tell() offensichtlich nicht ganz klar.

    Sei so gut, lies nach.

    Rolf

    while(<DATAIN>)
      {
      $i++;
      $hexoffset[$i] = tell(DATAIN);
      }
     close(DATAIN);

    Das Problem ist nur, dass danach der Array nichts enthält (bzw. nur die Zelle Nr. 0 hat danach einen zugewiesenen Wert)

    Der Beispiel-Code von Self-HTML klappt auch nicht - der Server bringt wiedermal den vielsagenden Fehler: a Error ocurred....

    Hier noch mal kurz der Beispielcode, damit ihr nicht zu lange suchen müßt:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    my $Datei = "/usr/info/readme.txt";
    my @Zeilenanfaenge = "";
    open(DATEI, "<$Datei") || die "$Datei: $!";
    $Zeilenanfaenge[0] = tell(DATEI);
    my $i = 0;
    while(<DATEI>) {
       $i++;
       $Zeilenanfaenge[$i] = tell(DATEI);
    }
    close(DATEI);
    $i = 1;
    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
    print "<html><head><title>Testausgabe</title></head><body>\n";
    foreach (@Zeilenanfaenge) {
       print "Zeile $i beginnt in der Datei bei Offset $_<br>\n";
       $i++;
    }
    print "</body></html>\n";

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?
    1. "Das Beispiel öffnet mit open eine Textdatei und liest sie in einer  while-Schleife zeilenweise ein. Dabei wird direkt nach dem Öffnen und bei jedem Schleifendurchgang die aktuelle Position des Dateizeigers mit tell ermittelt und im jeweils nächsten Element des Arrays @Zeilenanfaenge gespeichert. Anschließend wird HTML-Code an den Browser gesendet. Dabei werden die gespeicherten Offset-Positionen der Zeilenanfänge in einer  foreach-Schleife ausgegeben."

      Wie kann man an eine bestimmte Stelle in einerDatei springen ?

      1. Hi,

        Wie kann man an eine bestimmte Stelle in einerDatei springen ?

        wie kann man an eine bestimmte Stelle in einem bereits zum Thema geöffneten Thread springen?

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          Wie kann man an eine bestimmte Stelle in einerDatei springen ?

          wie kann man an eine bestimmte Stelle in einem bereits zum Thema geöffneten Thread springen?

          Mit einem Klick!

          Entdecke die Maus...

          SCNR, Rolf

          --
          SELFforum - Das Tor zur Welt!
          Theoretiker: Wie kommt das Kupfer in die Leitung?
          Praktiker: Wie kommt der Strom in die Leitung?
    2. Hello Rolf,

      Dir ist die Funktion von tell() offensichtlich nicht ganz klar.
      Sei so gut, lies nach.

      Auch ich habe mit PERL gerade erst angefangen und 'ne Menge Fragen dazu. Gibt es für Perl eine ähnliche Doku, so wie für PHP? Dann wäre ich Dir für einen Link-Tipp dankbar.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. use Mosche;

        Auch ich habe mit PERL gerade erst angefangen und 'ne Menge Fragen dazu. Gibt es für Perl eine ähnliche Doku, so wie für PHP? Dann wäre ich Dir für einen Link-Tipp dankbar.

        perdoc ist _das_ Maß aller Dinge.
        Ich muß allerdings zugeben, daß ich persönlich nicht dait gelernt habe (zumindest zu Beginn), da half mir ein "Einführung in Perl" aus dem O'Reilly-Verlag und "Fortgeschrittene Perl-Programmierung" (ebenfalls O'Reilly).

        http://www.perldoc.com sollte aber eigentlich (wenn man bereits programmieren kann) verständlich sein, insbesondere wenn man Grundlagen zB didaktisch sinnvoll aufgebaut auch in SelfHTML finden kann.

        use Tschoe qw(Matti);

        --
          Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
  2. ___Doppelposting___

    Bleib doch bitte in deinem alten Thread!

    Grüße,

    Fabian St.

  3. Ist es nicht möglich die Position in der Form  Pos(Zeile,Zeichen) anzugeben ?

    Das wäre sehr hilfreich

    1. Hallo Sebastian,

      Ist es nicht möglich die Position in der Form  Pos(Zeile,Zeichen) anzugeben ?

      Nein.

      Grüße,
       CK

      --
      Nur die Weisesten und die Dümmsten können sich nicht ändern.
      http://wwwtech.de/