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

ersten beiden Zeilen eines files speichern



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
paidopoieo
 2006-01-04 03:16
#61490 #61490
User since
2005-12-02
96 Artikel
BenutzerIn
[default_avatar]
hi,
sorry, hab ne frage,
ich hab ein file und moechte die ersten zwei zeilen speichern, dann die zweiten zwei Zeilen, dann die erste zeile mit der dritten zeile und die zweite mit der vierten zeile vergleichen, falls die erste und die dritte gleich sind die dritte loeschen, falls nicht, wird die zeile drei zur zeile eins, dann die zweite zeile mit der vierten vergleichen, falls die gleich sind, die zeile vier loeschen, und es wird die zeile vier zur zeile zwei, dann die naechsten zwei zeilen aus dem file speichern und das ganze von vorne.....

also ich habe vier variablen:
$line1 -> speichert zeile eins
$line2 -> speichert zeile zwei
$line3 -> speichert zeile drei
$line4 -> speichert zeile vier

vergleich $line1 mit $line3,
if equal, $line1 = $line3, delete $line3,
vergleich $line2 mit $line4,
if equal, $line2 = $line4, delete $line4,
dann speicher die naechsten zwei zeilen in $line3 und $line4 und beginne vergleich von vorne....

also, ich weiss grundsaetzlich wie ich es mache, nur nicht wie ich zwei zeilen auf einmal aus einem file auslese......hm....vielleicht ne dumme frage, aber ich komm nicht drauf....

mfg\n\n

<!--EDIT|paidopoieo|1136337502-->
Relais
 2006-01-04 11:50
#61491 #61491
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Verwende CPAN:Tie::File (siehe auch meine Sig).
Dann machst Du die Vergleiche auf dem Array und hast am Ende Deine Datei, wie Du sie haben willst.\n\n

<!--EDIT|Relais|1136368297-->
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
paidopoieo
 2006-01-04 23:56
#61492 #61492
User since
2005-12-02
96 Artikel
BenutzerIn
[default_avatar]
Hi Relais,
ich hab das jetzt mit dem Tie::File gemacht, funktioniert auch, denk ich mal, jedoch hab ich da ein Problem bei meinem Code:

Code: (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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/perl -w

use Tie::File;

tie @array, 'Tie::File', 'BlastOutput_2.txt' or die ("Could not open File");
print "opened file and stored content in array \n";

$even = 2;
$odd = 1;    
$oddfurther = 3;
print "intialized variables unique \n";
print "\n";

for ($count = 0, $count <= $#array, $count += 2) {      #count from the first line to the last line in the file
print "entered for loop \n";
                                       
print "trying to perform 1 if \n"; &n
bsp; &n
bsp;
   if ($array[$count] eq $array[$even] && $array[$odd] eq $array[$oddfurther]) { #0 eq 2 && 1 eq 3 => delete both
   print "entered 1 if condition \n";
       splice (@array,$even,1); &n
bsp; #delete 2
       splice (@array,$oddfurther,1); &n
bsp; #delete 3

   print "trying to perform 2 if \n";
   if ($array[$count] eq $array[$even] && $array[$odd] ne $array[$oddfurther]) {  #0 eq 2 && 1 ne 3 => delete 2
   print "entered 2 if condition";
       splice (@array,$even,1); &n
bsp; #delete 2
}
}
$even += 2;     #starts with 2 and becomes 4 aso..
$odd += 2; #starts with 1 and becomes 3 aso..
$oddfurther += 2; #starts with 3 and becomes 5 aso..
print "increased variables \n";
print "\n";
}


er geht mir in die for schleife rein, jedoch fuehrt er keine der if bedingungen aus und ich weiss nicht warum.....

vielleicht hat jemand eine idee, warum nicht...

dankeschoen

mfg\n\n

<!--EDIT|esskar|1136418783-->
renee
 2006-01-05 03:06
#61493 #61493
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ein paar Allgemeine Tipps:

*) benutze Wiki:use strict und use warnings
*) BlastOutput sieht mir sehr danach aus, dass BioPerl ganz interessant fuer Dich sein koennte

Lass Dir doch mal die Zeilen ausgeben, die Du vergleichen willst. Dann siehst Du vielleicht einen Fehler.

Kannst Du vielleicht mal ein paar Zeilen der Datei posten und zeigen, was dann am Ende rauskommen soll??
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/
paidopoieo
 2006-01-05 03:25
#61494 #61494
User since
2005-12-02
96 Artikel
BenutzerIn
[default_avatar]
hi,
ein Auszug aus der Datei:

Code: (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
ref|XP_473071.1|-->OSJNBa0014K14.2 [Oryza sativa (japonica cultivar-group)] emb|CAE02929.3| OSJNBa0014K14.1 [Oryza sativa (japonica cultivar-group)]
Seq: 746 WRWRWRWW 753
ref|XP_473071.1|-->OSJNBa0014K14.2 [Oryza sativa (japonica cultivar-group)] emb|CAE02929.3| OSJNBa0014K14.1 [Oryza sativa (japonica cultivar-group)]
Seq: 744 WRWRWRW 750
dbj|BAD87001.1|-->hypothetical protein [Oryza sativa (japonica cultivar-group)] dbj|BAD86933.1| hypothetical protein [Oryza sativa (japonica cultivar-group)]
Seq: 51 WRWRWRWW 58
dbj|BAD87001.1|-->hypothetical protein [Oryza sativa (japonica cultivar-group)] dbj|BAD86933.1| hypothetical protein [Oryza sativa (japonica cultivar-group)]
Seq: 49 WRWRWRW 55
gb|AAX96019.1|-->hypothetical protein LOC_Os11g07590 [Oryza sativa (japonica cultivar-group)] gb|ABA91724.1| hypothetical protein LOC_Os11g07590 [Oryza sativa (japonica cultivar-group)]
Seq: 77 WWWRRRWW 84
ref|XP_463574.1|-->P0497A05.2 [Oryza sativa (japonica cultivar-group)] dbj|BAB92559.1| P0497A05.2 [Oryza sativa (japonica cultivar-group)]
Seq: 124 WRWRWRWW 131
ref|XP_720804.1|-->hypothetical protein CaO19_13829 [Candida albicans SC5314] gb|EAL01978.1| hypothetical protein CaO19.13829 [Candida albicans SC5314]
Seq: 28 WWKWRW 33
dbj|BAE44752.1|-->hypothetical protein [Candida albicans] ref|XP_721316.1| hypothetical protein CaO19.6475 [Candida albicans SC5314] gb|EAL02511.1| hypothetical protein CaO19.6475 [Candida albicans SC5314] ref|XP_888855.1| hypothetical protein CaJ7.0276 [Candida albicans SC5314]
Seq: 28 WWKWRW 33
ref|ZP_00245446.1|-->COG0665: Glycine/D-amino acid oxidases (deaminating) [Rubrivivax gelatinosus PM1]
Seq: 86 WRWLWRWW 93
gb|AAM90664.1|-->putative pyruvate kinase [Deschampsia antarctica]
Seq: 11 WWKWWLRRWW 20
gb|AAM90664.1|-->putative pyruvate kinase [Deschampsia antarctica]
Seq: 19 WWKWWLRRWW 28
gb|AAM90664.1|-->putative pyruvate kinase [Deschampsia antarctica]
Seq: 6 WWLRRWW 12


schlussendlich sollte die Datei dann folgendermassen aussehen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ref|XP_473071.1|-->OSJNBa0014K14.2 [Oryza sativa (japonica cultivar-group)] emb|CAE02929.3| OSJNBa0014K14.1 [Oryza sativa (japonica cultivar-group)]
Seq: 746 WRWRWRWW 753
Seq: 744 WRWRWRW 750
dbj|BAD87001.1|-->hypothetical protein [Oryza sativa (japonica cultivar-group)] dbj|BAD86933.1| hypothetical protein [Oryza sativa (japonica cultivar-group)]
Seq: 51 WRWRWRWW 58
Seq: 49 WRWRWRW 55
gb|AAX96019.1|-->hypothetical protein LOC_Os11g07590 [Oryza sativa (japonica cultivar-group)] gb|ABA91724.1| hypothetical protein LOC_Os11g07590 [Oryza sativa (japonica cultivar-group)]
Seq: 77 WWWRRRWW 84
ref|XP_463574.1|-->P0497A05.2 [Oryza sativa (japonica cultivar-group)] dbj|BAB92559.1| P0497A05.2 [Oryza sativa (japonica cultivar-group)]
Seq: 124 WRWRWRWW 131
ref|XP_720804.1|-->hypothetical protein CaO19_13829 [Candida albicans SC5314] gb|EAL01978.1| hypothetical protein CaO19.13829 [Candida albicans SC5314]
Seq: 28 WWKWRW 33
dbj|BAE44752.1|-->hypothetical protein [Candida albicans] ref|XP_721316.1| hypothetical protein CaO19.6475 [Candida albicans SC5314] gb|EAL02511.1| hypothetical protein CaO19.6475 [Candida albicans SC5314] ref|XP_888855.1| hypothetical protein CaJ7.0276 [Candida albicans SC5314]
Seq: 28 WWKWRW 33
ref|ZP_00245446.1|-->COG0665: Glycine/D-amino acid oxidases (deaminating) [Rubrivivax gelatinosus PM1]
Seq: 86 WRWLWRWW 93
gb|AAM90664.1|-->putative pyruvate kinase [Deschampsia antarctica]
Seq: 11 WWKWWLRRWW 20
Seq: 19 WWKWWLRRWW 28
Seq: 6 WWLRRWW 12


hab mir die Zeilen auch ausgeben lassen, die stimmen, da steht genau das drinnen was drinnen sein sollte, jedoch uebergeht es die if bedingung...

Output:
Code: (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
26
opened file and stored content in array 
intialized variables unique

entered for loop
trying to perform 1 if
ref|XP_473071.1|-->OSJNBa0014K14.2 [Oryza sativa (japonica cultivar-group)] emb|CAE02929.3| OSJNBa0014K14.1 [Oryza sativa (japonica cultivar-group)]
ref|XP_473071.1|-->OSJNBa0014K14.2 [Oryza sativa (japonica cultivar-group)] emb|CAE02929.3| OSJNBa0014K14.1 [Oryza sativa (japonica cultivar-group)]
Seq: 746 WRWRWRWW 753
Seq: 744 WRWRWRW 750
increased variables

entered for loop
trying to perform 1 if
ref|XP_473071.1|-->OSJNBa0014K14.2 [Oryza sativa (japonica cultivar-group)] emb|CAE02929.3| OSJNBa0014K14.1 [Oryza sativa (japonica cultivar-group)]
dbj|BAD87001.1|-->hypothetical protein [Oryza sativa (japonica cultivar-group)] dbj|BAD86933.1| hypothetical protein [Oryza sativa (japonica cultivar-group)]
Seq: 744 WRWRWRW 750
Seq: 51 WRWRWRWW 58
increased variables

entered for loop
trying to perform 1 if
ref|XP_473071.1|-->OSJNBa0014K14.2 [Oryza sativa (japonica cultivar-group)] emb|CAE02929.3| OSJNBa0014K14.1 [Oryza sativa (japonica cultivar-group)]
dbj|BAD87001.1|-->hypothetical protein [Oryza sativa (japonica cultivar-group)] dbj|BAD86933.1| hypothetical protein [Oryza sativa (japonica cultivar-group)]
Seq: 51 WRWRWRWW 58
Seq: 49 WRWRWRW 55
increased variables


ich hab keine Ahnung wieso er mir nicht in die if bedingung reingeht...

Danke
renee
 2006-01-05 03:43
#61495 #61495
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
probier mal:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl

use strict;
use warnings;
use Tie::File;

my $file = 'BlastOutput.txt';
my %hash;
my $i = 1;

tie my @array,'Tie::File',$file or die $!;
chomp @array;
while($i < scalar(@array)-1){
push(@{$hash{$array[$i]}},$array[$i+1]);
$i += 2;
}
untie @array;

open(my $fh,$file) or die $!;
for my $key(keys(%hash)){
print $fh $key,"\n",join("\n",@{$hash{$key}}),"\n";
}
close $fh;
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/
paidopoieo
 2006-01-05 21:56
#61496 #61496
User since
2005-12-02
96 Artikel
BenutzerIn
[default_avatar]
hallo renee,
dankeschoen fuer deine hilfe, und bin gerade dabei deinen code zeile fuer zeile durchzugehen, da dieser code meinen perl horizont etwas uebersteigt... ;)
hab deinen code jetzt ausprobiert und bekomme folgende fehlermeldung:

Filehandle $fh opened only for input at line 21

lg
Hubert
paidopoieo
 2006-01-05 22:13
#61497 #61497
User since
2005-12-02
96 Artikel
BenutzerIn
[default_avatar]
hallo renee,
kannst du mir sagen, ob $fh eine neuer filehandler ist, soll da ein zweites file aufgemacht werden, wo reingeschrieben wird, check ich nicht...

mfg
[E|B]
 2006-01-05 23:40
#61498 #61498
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Zeile 19 sollte so lauten:

Code: (dl )
open(my $fh, "> $file") or die $!;


renee hat vergessen die Datei zum Schreiben zu öffnen.
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]
paidopoieo
 2006-01-06 01:55
#61499 #61499
User since
2005-12-02
96 Artikel
BenutzerIn
[default_avatar]
hi,
ich hab nur eine geringe Ahnung was dieser Code macht..... ;)
er funktioniert zwar, bringt mir aber das gesamt file durcheinander...., ich kann kein schema erkennen, wie er das macht....

die ersten eintraege befinden sich ploetzlich mitten im file, und die Sequenzen passen nicht dazu.....
kannst du mir bitte erklaeren was der code genau macht.....oder was mit meinen Code nicht stimmt....

dankeschoen im voraus

mfg
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2006-01-04 03:16.