öffen ersetzen speichern
Herrman
- perl
0 Patrick Andrieu0 Struppi0 Herrman0 Herrman0 Patrick Andrieu0 Siechfred
Hi,
ich stehe vor folgendem Problem:
Ich möchte eine Datei öffnen ein bestimmtes Wort suchen dieses ersetzen und speichern.
Bis auf das ersetzen klappt alles.
Wie mach ich das?
Ich dachte an den regulären Ausdruck ersetzen aber es will einfach nicht - was jetzt?
DANKE!
Hallo Herrman!
Ich dachte an den regulären Ausdruck ersetzen aber es will einfach nicht - was jetzt?
http://de.selfhtml.org/perl/sprache/regexpr.htm#suchen_ersetzen
Viele Grüße aus Frankfurt/Main,
Patrick
Ich dachte an den regulären Ausdruck ersetzen aber es will einfach nicht
Um dir wirklich helfen zu können, müßtest du uns "es" schon zeigen.
Struppi.
Hi,
sorry bin gerade am firmencomputer und kann euch nicht den genauen code schreiben aber so UNGEFÄHR sieht er aus.
$yn = 0;
open (DAT, "<dat.txt");
while (<DAT>) {
if ($_ =~ m/Hallo/) {
open (WRITE, ">>dat.txt");
$_ =~ s/Hallo/Ciao/;
close WRITE;
}
close DAT;
Natürlich fehlt da noch viel mehr code und mein skript zuhause macht das viel besser aber auf die schnelle ist mir nur das eingefallen. aber egal wie man es schreibt und ersetzen will bei mir klappt nichts nichts und wieder nichts.
also nochmal - ich will das machen:
perl Datei öffnen
text Datei durchsuchen nach einem bestimmten wert (Hallo)
Den Wert ändern in einen neuen (Hallo wird aus Ciao)
Es soll NUR der Wert in der text Datei geändert werden sonst nichts
perl Datei wird geschlossen
Wenn man die text Datei öffnet soll anstatt Hallo Ciao stehen.
bei mir bzw. bei meinem skript klappt alles perfekt nur ich kann einfach keinen bestimmten Wert in der text datei verändern.
der link zu selfhtml - reguläre ausdrücke nützt mir nichts da ich weiss wie es geht.
ich kann es auch ohne probleme nur gibt es ein problem wenn ich in einer anderen datei ein wort ändern will.
vielen danke
Hi ich nochmal
BITTE DAS $yn = 0 IGNORIEREN DAS WAR MEIN FEHLER GEHÖRT NICHT REIN!
danke
Hallo Herrman!
open (DAT, "<dat.txt");
while (<DAT>) {
if ($_ =~ m/Hallo/) {
open (WRITE, ">>dat.txt");
$_ =~ s/Hallo/Ciao/;
close WRITE;
}
close DAT;
Du gibst weder etwas aus, noch schreibst Du etwas in die Datei zurück.
Da muss ich Dir leider wieder einen Link hinknallen ;)
http://de.selfhtml.org/perl/funktionen/einausgabe.htm#open
Viele Grüße aus Frankfurt/Main,
Patrick
open (DAT, "<dat.txt");
Fehlerbehandlung? File Locking?
while (<DAT>) {
if ($_ =~ m/Hallo/) {
open (WRITE, ">>dat.txt");
Das dürfte in die Hose gehen.
$_ =~ s/Hallo/Ciao/;
Wegschreiben?
Für Dein Vorhaben würde ich Tie::File nehmen:
use Tie::File;
my $file = 'dat.txt';
tie my @lines, 'Tie::File', $file or die "Unable to tie $file: $!";
for(@lines) {
s/Hallo/Ciao/g;
}
untie @lines;
Siechfred