Markus Banach: format

Liebe Forumsbesucher,

mit dem folgenden Code wollte ich erreichen , dass die formatierten Zeilen in das array @tpt gespeichert werden.
Werden Sie aber nicht !?

open ( LOG, "$FileName" ) die "can`t open $FileName : $!" ;
while (<LOG>) {
($sid, $host, $date, $time, $access, $url, $http) = split ( /:/, $_ ) ;
write ;      
@tpt = <LOG> ; }
close(LOG) die "$!" ;

format STDOUT =
@>>> @<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<< @<<<<<<< @>>>>> @<<<<<<<<<<<<<<<<<<<< @<<<<<<<
$sid, $host, $date, $time, $access, $url, $http
.

Vielen Dank fuer Eure Tips

Markus Banach

  1. Hi,

    mit dem folgenden Code wollte ich erreichen , dass die formatierten Zeilen in das array @tpt gespeichert werden.
    Werden Sie aber nicht !?

    nein, das kann ich mir denken ;-)

    open ( LOG, "$FileName" ) die "can`t open $FileName : $!" ;
    while (<LOG>) {

    Dies entspricht der Zeile:
    while ($_ = <LOG>) {
    Es wird also eine Zeile (oder was immer $/ als Trennzeichen vorgibt) eingelesen und der magischen Variable $_ zugewiesen. Der Zeiger auf die Datei ist entsprechend weitergerückt.

    write ;

    Höh?

    @tpt = <LOG> ; }

    Hier wird der Rest aus der Datei eingelesen. Versuche lieber
    push(@tpt,$_);
    denn selbst _wenn_ obiges klappen würde, würdest Du das Array jedes Mal neu definieren.

    Cheatah

  2. Hi Markus!

    open ( LOG, "$FileName" ) die "can`t open $FileName : $!" ;
    while (<LOG>) {
    ($sid, $host, $date, $time, $access, $url, $http) = split ( /:/, $_ ) ;
    write ;

    Das hier nichts rauskommt liegt möglicherweise daran, daß das format vorher definiert werden
    muß ... bin mir da aber nicht so sicher.

    @tpt = <LOG> ; }

    Hier hat Cheatah natürlich recht. Durch diesen Befehl liest Du die restlichen Zeilen aus der
    Datei, ohne sie zu bearbeiten ...

    format STDOUT =
    @>>> @<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<< @<<<<<<< @>>>>> @<<<<<<<<<<<<<<<<<<<< @<<<<<<<
    $sid, $host, $date, $time, $access, $url, $http
    .

    Wie gesagt, diesen Teil einfach mal ein bißchen höher einsetzen.

    Jörk