• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] Perl - S///

catweasel

Hacker
Hi!

Wie kann man das perlmäßiger schreiben (ohne eine temporäre Datei zu erzeugen)?

Code:
#!/usr/bin/perl

`sed -i 's/a/e/g' /Pfad/Datei`
 

regexer

Advanced Hacker
catweasel schrieb:
Aber wie schreibt man das innerhalb eines Perlskriptes?
Eine Möglichkeit wäre, die Datei komplett in den Hauptspeicher zu lesen (Stichwort: slurp), den Substitute vorzunehmen, und dann komplett wieder zurückzuschreiben.
 

abgdf

Guru
Aber wie schreibt man das innerhalb eines Perlskriptes?

Ach so, Du hast Probleme mit Datei-I/O:

Code:
#!/usr/bin/perl

open (IN, "/Pfad/Datei") or die; 
my @a=<IN>;
close IN;

foreach (@a)
{
    $_ =~ s/a/e/g;
}

open (OUT, ">/Pfad/Datei") or die;
print (OUT @a);
close OUT;

Siehe "Tag 15" ...

HTH
 

regexer

Advanced Hacker
Oder so:
Code:
#!/usr/bin/perl
use strict;
local $/;
open (IN, "<x") or die "$!\n";
$_=<IN>;
close IN;
s/a/e/g;
open (OUT, ">x") or die "$!\n";
print OUT;
close OUT;
Aber wie gesagt: Man sollte das nur mit Dateien machen, die auch bequem in den Hauptspeicher passen ;)
 
Oben