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

Zeile in Textdatei austauschen?? (Seite 2)

Leser: 4


<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
renee
 2006-04-25 11:48
#65301 #65301
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=master,25.04.2006, 09:36]@renee
Die Zeilennummer ist in meiner version äquivalent zum Array-index.

Wobei TIE auch eine Lösung ist.

[...][/quote]
Jein, Bei Dir muss es dann halt ein großes Array geben, während bei mir der Speicher effizienter genutzt wird.
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/
master
 2006-04-25 11:53
#65302 #65302
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
@opi

500 MB für ein paar GUI-Eingabefelder? Das denke ich nicht.
Leider sagt uns Andreas die Grösse noch nicht :-)

Aber die paar Felder zu Speichern wird bestimmt nicht viel Speicher brauchen. Wird wohl mehr richtung configdatei gehen oder? Bei DB, wär es dann eh sinnvoll gleich eine DB zu nutzen, oder eine CSV-konforme-Datei zudem würde man Sie ja noch in mehrere Dateien aufteilen. um 500 MB zu verhindern..


wegen beitrag.. ja habe es gemerkt.. Warst ca. 1 Klick schneller :-)

@renee
datei einlesen, joinen, splitten nach zeilenumbruch (\n \r)
oder gleich zeilenweise einlesen. und jede zeile einzeln parsen.
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
master
 2006-04-25 12:01
#65303 #65303
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
@renee
Es kommt auf die Grösse der Datei und Performance an.
Braucht er das nur für ein kleines Configfile oder so.. dann geht's wunderbar. Bis ca. 10 MB grosse Dateien sollte das problemlos gehen. Darüber würde ich nat. auch nicht alles auslesen.
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
bloonix
 2006-04-25 12:01
#65304 #65304
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=master,25.04.2006, 09:53]@opi

500 MB für ein paar GUI-Eingabefelder? Das denke ich nicht.
Leider sagt uns Andreas die Grösse noch nicht :-)[/quote]
Geb dir mal ein wenig Mühe, wisch dir den Schlaf aus deinen
Augen und lies meinen Thread ein zweites Mal, denn dann
wirst du erfahren, dass mein Vorausdenken daraus besteht,
dass der OP vielleicht mal in naher Zukunft vor hat, sein Stück
Code in eine Funktion zu packen und auszulagern, um es auch
für andere Dateien aller Art zu verwenden. ;)

Und dieses wir hauen alles in den Speicher, bis keiner mehr
arbeiten kann
Denken ist nicht nur kostspielig...

Edit:
Aber bevor er anfängt, dass Rad neu zu erfinden...
Renee's Vorschlag zum Einsatz des Moduls ist noch viel besser!\n\n

<!--EDIT|opi|1145952667-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
Andreas
 2006-04-25 12:06
#65305 #65305
User since
2003-09-24
111 Artikel
BenutzerIn
[default_avatar]
Hallo an alle,
sorry für die verzögerte Antwort,
die Dateien haben ca 10-20Tausend Zeilen und eine Stärke von ca 400-800K.
Dass mit File::Tie hört sich recht konfortabel an, ich werde es mal versuchen.
Danke an euch

Gruß Andreas
renee
 2006-04-25 12:14
#65306 #65306
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=master,25.04.2006, 09:53]@renee
datei einlesen, joinen, splitten nach zeilenumbruch (\n \r)
oder gleich zeilenweise einlesen. und jede zeile einzeln parsen.[/quote]
Warum Arbeit doppelt machen. Das ist ziemlich sinnfrei, oder??
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/
bloonix
 2006-04-25 12:19
#65307 #65307
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=master,25.04.2006, 10:01]Es kommt auf die Grösse der Datei und Performance an.[/quote]
Nein master! Es kommt nicht darauf an, ein Programm so zu
schreiben, dass es einzig und allein nur für diesen einen kleinen
Zweck verwendet werden kann!

Wo bleibt bitte die Portablität, Wiederverwendbarkeit und
Dynamik?

[quote=master,25.04.2006, 10:01]Darüber würde ich nat. auch nicht alles auslesen.[/quote]

Ach je, musst du perlsüchtig sein, wenn du alle deine
Skriptchen regelmäßig neu schreibst ;)\n\n

<!--EDIT|opi|1145953506-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
master
 2006-04-25 12:19
#65308 #65308
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
@renee
Geht um die verschiedenen Zeilenumbrucharten.
Code: (dl )
1
2
3
while(<HANLDER>)
{
}

Berücksichtigt glaub ich ja nur \n oder kann man dem z. B. auch beibringen auf \r\n (winmässig) zu achten?
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
renee
 2006-04-25 12:27
#65309 #65309
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Na klar. Es wird immer der Inhalt von $/ genommen. Unter Windows wird schon der richtige Zeilentrenner genommen. Du kannst aber auch immer händisch $/ nehmen. Das ist z.B. für FASTA-Dateien mehr als praktisch:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
{
local $/ = "\n>";
open(my $fh,'<',$fasta_file) or die $!;
while(my $entry = <$fh>){
chomp $entry;
$entry = '>'.$entry unless(index($entry,'>') == 0);
print "FASTA-Eintrag: $entry\n";
}
close $fh;
}


Genausogut kannst Du auf einem Unix-System auch "\r\n" für $/ angeben um Windows-Dateien einzulesen!

Edit: Nur falls Du es testen willst. So sieht eine FASTA-Datei aus:
Code: (dl )
1
2
3
4
5
6
7
>Accession_Nr
SEQUENCENOCHUNDNOCHJEDEMENGEAMINO
SAEUREN
>Accession_2
NOCHNESEQUENZDIEESEIGENTLICHNICHTGIBT
MITJEDERMENGEAMINOS
AEUREN
\n\n

<!--EDIT|renee|1145953838-->
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/
master
 2006-04-25 12:33
#65310 #65310
User since
2003-10-20
610 Artikel
BenutzerIn
[default_avatar]
@opi
Ja das ist mir schon klar Opi!!!
Aber dann bastelt der arme Kerl länger rum....

Optimieren kann er das später bzw. mit der Erfahrung wird er sich dann schon eine eigene Routine schreiben.


Es geht ja um kleine Dateien < 1 MB -> Ganze datei in Speicher = kein Problem....


Besonders in den Anfängen kann er noch nicht an alle Probleme denken....


ps. nein ich schreibe nicht immer alles neu.
Jedoch sind besonders lade/speicherroutine manchmal sehr individuell.

Einmal brauchst du zeilenweise, mal die ganzedatei, mal tie, mal sysopen, mal so und mal anders. mal mit rechten. usw.
dann plattformübergreiffend.. dann mal eben nicht.

Wenn er schon möglichst elegant entwickeln will, müsste er das format z. B. kennen. CSV oder DB nutzen, oder configfile
Ich vermute andreas ist noch nicht soooo erfahren in allem daher sollte er mal set by step vorgehen und dann optimieren.

Er merkt dann das gewisse sachen immer wieder vorkommen und kann diese optimieren.

Wenn du sagst du hättest die ultimative "open/lade"-routine
dann zeig mal her....
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2006-04-25 11:09.