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 (Seite 2)



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
renee
 2006-01-06 07:13
#61500 #61500
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[E|B
,05.01.2006, 22:40]Zeile 19 sollte so lauten:

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


renee hat vergessen die Datei zum Schreiben zu öffnen.

@EB: Hab ich gar nicht, aber das '>' wollte nicht durch die duenne Leitung gehen *fg*

@paidopoieo: Die Reihenfolge wird hier durcheinander gebracht, weil ich die Daten in einem Hash speicher und Hashkeys werden nicht sortiert gespeichert. Man koennte - um die Ordnung zu wahren - die $keys in einem Array speichern und dann ueber das Array iterieren...

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
#!/usr/bin/perl

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

my $file = 'BlastOutput.txt';
my %hash;
my @sorted;
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]);
push(@sorted,$array[$i]) unless(grep{$_ eq $array[$i]}@sorted);
$i += 2;
}
untie @array;

open(my $fh,">$file") or die $!;
for my $key(@sorted){
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-07 00:35
#61501 #61501
User since
2005-12-02
96 Artikel
BenutzerIn
[default_avatar]
hallo renee,
dankeschoen fuer deine bemuehungen, der code funktioniert einwandfrei.... :)
es waere nett von dir wenn du mir den folgende codefragment erklaeren koenntest:
Code: (dl )
push(@{$hash{$array[$i]}},$array[$i+1]);


da ich hier einfach nicht durchblicke, was da genau passiert....ungefaehr kann ich es mir ausmalen, ich weiss was das push macht....jedoch ist mir nicht klar, wieso du ein @ vor dem gesamten ausdruck hast......nein, eigentlich ist mir das gesamte codefragment nicht wirklich klar......

weiters haette ich noch ne frage, wenn ich folgendes textfile habe....(Ausschnitt):
Code: (dl )
1
2
3
4
ref|XP_709868.1|-->PREDICTED: similar to topoisomerase I beta isoform 5 [Danio rerio]
ref|XP_709866.1|-->PREDICTED: similar to topoisomerase I beta isoform 3 [Danio rerio]
ref|XP_709869.1|-->PREDICTED: similar to topoisomerase I beta isoform 6 [Danio rerio]
ref|XP_709865.1|-->PREDICTED: similar to topoisomerase I beta isoform 2 [Danio rerio]


gibt es dann eine moeglichkeit zu sagen, ok, ich hab hier vier fast identische eintraege....wenn, in dem fall diese vier eintraege, zu sagen wir mal 80 oder 90% matchen, das ich dann die restlichen drei rausloesche, also so wie vorher, nur das ich diesesmal nicht ein 100% match habe.....

mfg
renee
 2006-01-07 05:41
#61502 #61502
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es gibt Module, mit denen man einen 90%-match als 100% werten kann (z.B. CPAN:String::Approx). Mit denen koennte man vorher die Zeilen auf den match testen und ggf. als identisch werten...

Zu dem Code-Fragment... @{} ist eine Dereferenzierung des Teils, das zwischen {} steht in ein Array. Am besten, Du liest Dir mal Wiki:perldoc perlreftut durch. Der Artikel ist sogar Deutsch...
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/
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



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