perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 29
Click for quality!




10.02.2012 / 20:58

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragin eine datei schreiben
Seitenanfang
hi all,
ich will in allen dateien eines verzeichnisses die selbe ersetzung vornehmen. der dateiname ändert sich in einer foreach-schleife mit jedem durchlauf ändert.

wie lautet die anweisung zum neuschreiben der datei

open(DATEI, ">testdatei.txt") || die "Datei nicht gefunden";

wenn testdatei.txt kein feststehender name ist sondern durch den skalar $datei ausgedrückt wird?

mein gesamt code ist (im bsipiel will ich alle einsen durch neunen ersetzen):

[code]
#!/usr/bin/perl -w

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

my $Verzeichnis = "/www/erzwiss/test";
opendir(DIR, $Verzeichnis) || die "$Verzeichnis: $!";
my @Eintraege = readdir(DIR);
closedir(DIR);

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(@Eintraege)
{
print "$_<br>\n";

my $datei = $_;
open(DATEI, "$datei") || die "Datei nicht gefunden";
my @Zeilen = <DATEI>;
close(DATEI);

my @NeueZeilen;
foreach(@Zeilen)
{
$_ =~ s/"1"/"9"/;
push(@NeueZeilen,$_)
}

open(DATEI, ">$datei") || die "Datei nicht gefunden";
print DATEI @NeueZeilen;
close(DATEI);
}
print "</body></html>\n";

[code]

die zeile
open(DATEI, ">$datei") || die "Datei nicht gefunden";
macht den fehler.

danke im voraus
helmut

Datum: 07.11.2008-07:26

Beitragre: in eine datei schreiben
Seitenanfang
Hallo!

>> open(DATEI, ">$datei") || die "Datei nicht gefunden";

Wenn eine nicht vorhandene Datei mit Schreibzugriff geöffnet werden soll, wird sie einfach angelegt. Schon allein deshalb kann die von dir angenommene Fehlerursache niemals eintreten. In der Variable $! steht immer die tatsächliche Fehlerursache:

open(DATEI, ">$datei") || die "$datei: $!";

Da dass Skript offenbar auf einem Webserver laufen soll, nehme ich stark an, dass es der gleiche Fehler wie in http://www.perlunity.de/cgi-bin/forum/forum_thread.cgi?tid=20532&mid=42320&fid=1&pn=0 (Fall b) ist.

Grüße, Skrilax

Datum: 07.11.2008-09:23

Beitragre: in eine datei schreiben
Seitenanfang
das ist leider nicht der grund. die rechte für alle dateien des verzeichnisses stehen auf 777.

die syntaxprüfung auf em unix-server zeigt für die zeile


open(DATEI, ">$datei") || die "Datei nicht gefunden";

einen fehler an, den ich nicht verstehe:

[error]
Datei nicht gefunden at /www/erzwiss/test/prob.pl line 34.
[/error]

(definition von $datei in meinem code in der ersten anfrage!)

kannst du / könnt ihr bitte nochmal helfen.
gruß helmut

Datum: 07.11.2008-14:09

Beitragre: in eine datei schreiben
Seitenanfang
> open(DATEI, ">$datei") || die "Datei nicht gefunden";
> einen fehler an, den ich nicht verstehe:
> Datei nicht gefunden at /www/erzwiss/test/prob.pl line 34.

Du gibst ein "Datei nicht gefunden" als Fehler aus, wenn das Öffnen der Datei fehl schlägt, und wunderst dich dann, dass genau dieser Fehler ausgegeben wird?
Ändere die Zeile in

open(DATEI, ">$datei") || die "$datei: $!"

Nur so erhälst du eine sinnvolle Fehlermeldung.

Datum: 07.11.2008-16:18

Beitragre: in eine datei schreiben
Seitenanfang
alles ok.
danke helmut

Datum: 09.11.2008-06:20

-






-
-