Schrift
[thread]1354[/thread]

Post aus anderem Forum !

Leser: 2


<< >> 8 Einträge, 1 Seite
BrownWolf
 2003-09-16 05:37
#19182 #19182
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Hallo,

in einem anderen Forum hat jemand anderes eine schwierige Aufgabe gegeben. Sie wollte dafür 20 ¤ überweisen wenn es jemand schaft *lol*

Quote
20 Euro Belohung!!!!          



Hallo, brauche dringend hilfe.
möchte eine textdatei ab einer bestimmten Stelle überschreiben.
Der Printbefahl sieht so aus:
print FILE "$id}{$email}}{$url}{$name}{$ort}{$strasse}{$nr}{$tel\n";

Ich möchte nun, das beim überschreiben vorne, die ersten drei Variablen nicht überschrieben werden, aber dann aber der vierten Varibale soll alles überschrieben werden. Also, das die id, die email und die url so bleiben sollen, der rest wird neu beschrieben. Ich habe mal was von einem seek-befehl gehört, der einen Zeiger auf eine bestimmte Stelle steuert und dann von dort aus beschreibt.

Wie mach ich das???? Bruch dringend einen Code, der erste Code der funktioiert,dem überweise ich 20 euro sofort.

moni


Ich habe darauf folgendes geantwortet:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Keine Garantie auf Richtigkeit:


#!/usr/bin/perl -w

my $line = 5; # Achtung ! Perl fängt bei 0 an zu zählen.

#---- Daten die geändert werden sollen.
my $ort = "Kanada";
my $strasse = "Buschstrasse";
my $nr = 32;
my $tel = 123456;

open(DAT,"+<datei.txt") || die $!; # Datei zum lesen und schreiben öffnen
my @read = <DAT>; # Dateiinhalt einlesen
$read[$line] =~ /(.+)}{(.+)}}{(.+)}{(.+)}{.+}{.+}{.+}{.+/; # In bestimmter Zeile Daten zwischen Klammern matchen.
splice(@read, $line, 1, "ũ}{Ū}}{ū}{Ŭ}{$ort}{$strasse}{$nr}{$tel
"); # Bestimmte Zeilen ändern, dabei die Daten der ersten 4 Klammern behalten.
seek(DAT, 0, 0); # Dateizeiger an den Anfang der Datei setzen
truncate(DAT, 0); # File komplett löschen
print DAT @read; # Daten Zurück in die Datei schreiben
close(DAT); # Datei schliessen


20 Euro brauchens nicht sein. Ne Aspirin tuts auch !


Wie hättet ihrs gemacht ?
Edit: Diese komischen Zeichen da bei splice sollten eigentlich $1, $2 , $3 , $4 sein aber das Forum nimmt die nicht an ?\n\n

<!--EDIT|BrownWolf|1063676311-->
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
Ronnie
 2003-09-16 10:43
#19183 #19183
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hi, ich würde prinzipiell in eine zweite Datei schreiben. Die Leute wissen meist nicht was sie wollen, oder es fällt ihnen hinterher auf das es da einen Sonderfall gab. Ob du das splice brauchst weiß ich nicht, es ginge auch (vereinfacht):
Code: (dl )
s/^(\w+).(\w+).(\w+).(\w+).*$/$1 $2 $3 $4 $ort $str $nr $tel/;

oder habe ich da einen Denkfehler?

Gruss,
Ronnie\n\n

<!--EDIT|Ronnie|1063694640-->
format_c
 2003-09-16 10:56
#19184 #19184
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
TIMTOWTDI
Und haste die 20 Euro auch bekommen?

Gruß Alex
jan
 2003-09-16 12:59
#19185 #19185
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
lass sie an strat überweisen, auf's community-konto.
Relais
 2003-09-16 13:14
#19186 #19186
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Und wenn man nicht die ganze Datei neuschreiben und im Speicher halten will, CPAN:Tie::File verwenden. http://perloo.de/de/Tie/File/04.html
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
BrownWolf
 2003-09-16 15:35
#19187 #19187
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Mein Ansatz war aber doch schon nicht schlecht :-)
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
pktm
 2003-09-16 19:34
#19188 #19188
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Wie ichs gemacht hätte? Steht als dritte Antwort im besagten Forum :)
http://www.intergastro-service.de (mein erstes CMS :) )
[E|B]
 2003-09-16 20:05
#19189 #19189
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=pktm,16.09.2003, 17:34]Wie ichs gemacht hätte? Steht als dritte Antwort im besagten Forum :)[/quote]
Und welches ist das besagte Forum?!
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
<< >> 8 Einträge, 1 Seite



View all threads created 2003-09-16 05:37.