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

Matrix: Matrix erstellen (Seite 3)

Leser: 1


<< |< 1 2 3 4 >| >> 38 Einträge, 4 Seiten
ptk
 2004-08-04 20:24
#85321 #85321
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Tim78,04.08.2004, 16:20]open FILE, "gzip -cdfq $data"[/quote]
Ohne Pipe-Zeichen am Ende?
renee
 2004-08-05 01:34
#85322 #85322
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Tim: Mein Posting über dem von Dubu gesehen?? Da habe ich was kurzes geschrieben...

Na gut, hier nochmal der Code, um die Zeilen abwechselnd in andere Dateien zu schreiben...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
my $infile = 'path/to/file';
my $out1 = 'path/to/out1';
my $out2 = 'path/to/out2';

open(R_FILE,"<$infile") or die$!;
my @lines = <R_FILE>;
close R_FILE;

open(W_OUT1,">$out1") or die $!;
open(W_OUT2,">$out2") or die $!;
for(my $i = 0; $i < $#lines; $i +=2){
 print W_OUT1 $lines[$i];
 print W_OUT2 $lines[$i+2];
}
close W_OUT1;
close W_OUT2;
\n\n

<!--EDIT|renee|1091655351-->
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/
Crian
 2004-08-05 02:43
#85323 #85323
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=Dubu,04.08.2004, 15:31][quote=Tim78,04.08.2004, 14:25]habe doch noch ein kleines Problem, gibt es eine Möglichket eine Datei zeilenweise einzulesen und zwar in der Art, dass ungerade Zeilen in eine Datei, die geraden Zeilen in eine andere Datei geschrieben werden??[/quote]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl
use strict;
use warnings;

open my $u, ">ungerade" or die $!;
open my $g, ">gerade" or die $!;

while (<>) {
    print { $|-- ? $g : $u } $_;
}

Aufruf mit programmname eingabe.dat. Es werden die Dateien gerade und ungerade erzeugt.[/quote]
Oder

Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl
use strict;
use warnings;

open my $u, ">ungerade" or die $!;
open my $g, ">gerade" or die $!;

while (<>) {
  print { 1 & $. ? $u : $g } $_;
}
\n\n

<!--EDIT|Crian|1091659435-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Tim78
 2004-08-05 16:30
#85324 #85324
User since
2004-05-11
14 Artikel
BenutzerIn
[default_avatar]
[quote=renee,04.08.2004, 23:34]@Tim: Mein Posting über dem von Dubu gesehen?? Da habe ich was kurzes geschrieben...

Na gut, hier nochmal der Code, um die Zeilen abwechselnd in andere Dateien zu schreiben...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
my $infile = 'path/to/file';
my $out1 = 'path/to/out1';
my $out2 = 'path/to/out2';

open(R_FILE,"<$infile") or die$!;
my @lines = <R_FILE>;
close R_FILE;

open(W_OUT1,">$out1") or die $!;
open(W_OUT2,">$out2") or die $!;
for(my $i = 0; $i < $#lines; $i +=2){
print W_OUT1 $lines[$i];
print W_OUT2 $lines[$i+2];
}
close W_OUT1;
close W_OUT2;
[/quote]
Hi renee,
hatte das Posting nicht übersehen (glaube ich zumindest...) aber es klappt leider dennoch nicht. Habe auch noch &´ne Frage:
Muss es denn nicht
print W_OUT2 $lines[$i+1]
heissen?
Ansonsten sieht das ja sehr logisch aus, aber irgendwo muss noch der Wurm drin sein...
MfG
Tim

P.S. Vielen Dank an alle, die mir bisher geholfen haben. Hat mich wirklich sehr viel weiter gebracht. Danke.
renee
 2004-08-05 16:46
#85325 #85325
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja, es muss +1 heißen... Also bei mir klappt das wunderbar! Was für Fehlermeldungen bekommst Du??
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/
Tim78
 2004-08-05 16:55
#85326 #85326
User since
2004-05-11
14 Artikel
BenutzerIn
[default_avatar]
Also eine Fehlermeldung bekomme ich nicht, das Skript läuft durch, aber trennt die Zeilen scheinbar nicht, jedenfalls ist der Inhalt der beiden Dateien identisch. Habe aber keine Ahnung, woran das liegen mag.
renee
 2004-08-05 17:06
#85327 #85327
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja, wenn du die 2 in die 1 geändert hast (also von $lines[$i + 2] in $lines[$i + 1]), dann sollte es laufen...
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/
Tim78
 2004-08-05 17:11
#85328 #85328
User since
2004-05-11
14 Artikel
BenutzerIn
[default_avatar]
Geändert habe ich das, aber dennoch sind die Inhalte der beiden Dateien identisch. Kann ja nur am Ausgangsmaterial liegen, oder?
Werde dann da mal ein wenig stöbern. Jedenfalls vielen Dank für die guten Tipps.
MfG
Tim
Dubu
 2004-08-05 20:55
#85329 #85329
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Ronnie,04.08.2004, 16:53]probier es einmal mit:
Code: (dl )
gzip -d dateiname | programm

Bei den gzip-Optionen weiß ich nicht was du brauchst, aber das Programm (von Dubu) sollte via Pipe ansprechbar sein.[/quote]
Das sollte heissen
Code: (dl )
gzip -cd dateiname | programm

Die Option -c sorgt dafuer, dass die Ausgabe an STDOUT geht.
Dubu
 2004-08-05 21:00
#85330 #85330
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Tim78,04.08.2004, 16:20]das klappt bei mir so leider nicht, die Datei, die zeilenweise ausgelesen werden soll, öffne ich mit

open FILE, "gzip -cdfq $data"

Danach habe ich dann, wie von Dir beschrieben, die beiden Dateien geöffnet, diese bleiben danach aber leer.[/quote]
Wie ptk schon sagte, da fehlt ein Pipe-Zeichen. Und eine Fehlerabfrage.
open FILE, "gzip -cdfq $data |" or die $!;

Ausserdem musst du dann natuerlich
while (<>) {
aendern in
while (<FILE>) {
<< |< 1 2 3 4 >| >> 38 Einträge, 4 Seiten



View all threads created 2004-08-03 17:13.