Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10062[/thread]

Datei editieren



<< >> 5 Einträge, 1 Seite
Gast Gast
 2007-08-14 00:37
#97864 #97864
Ich hab aus versehen die falsche Version benutzt, eigentlich meinte ich diese:

Code: (dl )
1
2
3
4
5
6
7
8
9
print "Neuer Charactername: ";
chomp(my $neuer_character = <STDIN>);
open KRWL, "./krawler";
foreach (@text_krwl = <KRWL>)
{
$_ =~ s/^\$name = ".*";$/\$name = "$neuer_character";/;
}
open KRWL, "> ./krawler";
print KRWL (@text_krwl);


Mit diesem Teil meines Programmes, wollte ich die Zeilen von meinem Programm einlesen und die Variable "$name" auf den angegebenen Namen des Benutzers (in $neuer_character) umändern.
Beispiel: In einer früheren Zeile des Programmes steht:
Code: (dl )
1
2
3
#!/usr/bin/perl -w
use strict;
my $name = "maggie";

Dies soll nun in folgende Zeilen umgewandelt werden:
Code: (dl )
1
2
3
#!/usr/bin/perl -w
use strict;
my $name = "Eingabe des Benutzers;


Aber irgendwie habe ich das Gefühl ich mache das zu umständlich. Außerdem ist es glaub ich nicht so geschickt Daten wie Namen in dem Quellcode zu speichern. Wie krieg ich das anders hin?
Gast Gast
 2007-08-13 22:44
#98082 #98082
Dies ist bestimmt nicht die beste Lösung Text in einer Datei zu verändern, oder?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
print "Neuer Charactername: ";
chomp(my $neuer_character = <STDIN>);
substr($name, 0) = $neuer_character; ### OB das wohl geht?!
open KRWL, "./krawler";
foreach (@text_krwl = <KRWL>)
{
$_ =~ s/^\$name = ".*";$/\$name = "$neuer_character";/;
}
open KRWL, "> ./krawler";
print KRWL (@text_krwl);


Bitte belehrt mich eines besseren. Danke im Vorraus
Gruß Gast
renee
 2007-08-13 22:54
#98084 #98084
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Vielleicht solltest Du noch erklären *was* Du eigentlich genau vorhast. Was möchtest Du mit dem Verändern der Datei bewirken?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bieber
 2007-08-14 09:55
#98104 #98104
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
warum denn nicht?!

du solltest aber unbedingt die Dateien wieder schließen! besser ist es (denke ich) erst die Datei in ein array schlürfen, Datei schließen, dann array bearbeiten

dann wieder Datei öffnen und Array zurückschreiben, Datei schließen,
bietet sich zumindest bei kleineren Datenmengen an, ich würde auch empfehlen das du dein FileHandle entsprechend lesen-schreiben benennst, macht es übersichtlicher

zu deiner Eingabe, wie stellst du es dir denn vor?! ich sehe da erstmal 2 Möglichkeiten, einmal Kommandokonsole/Programmaufruf und dann in einer Konfigurationsdatei wenn es fest definiert sein soll

schau dir dazu mal CPAN:YAML::TINY an

PS mit use strict im ersten Code-Teil wäre dir aufgefallen das @text_krwl nicht gut initalisiert ist
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
renee
 2007-08-14 10:28
#98108 #98108
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Der Tipp von bieber mit einer Konfigurationsdatei ist absolut richtig. Wenn Du aber dennoch mal in Versuchung kommst, eine Datei direkt zu ändern, dann solltest Du Dir CPAN:Tie::File anschauen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 5 Einträge, 1 Seite



View all threads created 2007-08-13 22:44.