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

spezielle Daten aus Datei (Seite 2)

Leser: 1


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
renee
 2007-06-04 16:15
#77029 #77029
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mit CPAN:HTML::Template::Compiled...
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/
Strat
 2007-06-04 18:21
#77030 #77030
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
my $line;
while (<SEQUENZ>) {
$line = $_;

Warum nicht gleich folgendes?
Code: (dl )
while( my $line = <SEQUENZ> ) {


ich empfehle, variablen stehts nur in dem kleinst moeglichen scope zu definieren, weil man sich dann kaum mehr um die aeusseren abhaengigkeiten eines blocks kuemmern muss.
Code: (dl )
while( <SEQUENZ> )

ist auch eventuell gefaehrlich, weil du die globale Variable $_ verwendest. Wenn du sie in einem aeusseren Scope auch nochmal verwendest, ueberschreibst du sie dir, z.B.
Code: (dl )
1
2
3
4
5
6
7
foreach ( 1..3 ) {
print "before: $_\n";
while( <SEQUENZ> ) {
# mach irgendwas
}
print "after: $_\n";
}

nur bei foreach wird $_ automatisch "lokalisiert".

Also entweder
Code: (dl )
while( local $_ = <SEQUENZ> ) {

verwenden, oder meiner Meinung nach besser noch eine benannte Variable
Code: (dl )
while( my $line = <SEQUENZ> ) {
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Strat
 2007-06-04 18:39
#77031 #77031
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
nebenbei: bei system immer abfragen, ob alles klar gegangen ist, siehe <!--perldoc_f1--><a href="http://faq.perl-community.de/bin/view/Perldoc/perl..." target="_blank"><img alt="perldoc " src="/iB_html/non-cgi/Skin/SKIN-3/images/perldoc.gif" border="0"> <!--perldoc_f2-->-f system<!--perldoc_f3--></a><!--perldoc_f4-->

Bei einem Kunden gab es mal das Problem, dass Daten von System A ins System B synchronisiert wurden. Irgendwann dann kam mal ich und bekam den Auftrag, Daten in System A zu aktualisieren, was auch klappte. Nur in System B kamen die nie an. Eine Skriptanalyse brachte folgendes zum Vorschein:
x) der Entwickler verwendete fuer den Export aus System A ein externes Programm, das nicht vorhanden war. Es hat offenbar einen Serverumzug nicht mitgemacht.
x) Dieses externe Programm schrieb die Daten in eine Datei, die den Serverumzug mitgemacht hat, da sie im selben Verzeichnis wie das Script lag.

Dies fiel einige Monate lang nicht auf, weil der Entwickler vergessen hatte zu ueberpruefen, ob das externe Kommando korrekt ausgefuehrt werden konnte, weil er sich einfach darauf verliess, dass die Datei eingelesen werden konnte. Aber er hat die Datei zu Programmstart nicht geloescht, also war sie immer da, und monatelang wurden die Daten in System B nicht aktualisiert. Und da es sich um Faxnummern handelte, konnten eine Menge Faxe nicht zugestellt werden.

Wenn du das externe Kommando haeufiger aufrufst, dauert es, wenn du das kommando als string mitgibst, eventuell unnoetig lange, weil vor dem aufruf noch die shell aufgerufen wird, um das kommando zu interpretieren. wenn du system mit einer liste aufrufst, kannst du dies meist vermeiden:
Code: (dl )
1
2
3
4
5
6
7
8
9
my @callParameters = (
'c:\xyz\blastall.exe', # absoluter pfad !
-i => 'temp.fasta',
-d => $Optionen{'pdbaaZiel'},
-p => blastp,
-o => 'C:\Perl\blast\Sequenze' .$parseparameter->{'acc'} .'.blastp'; );

my $rc = system( @callParameters );
if( $rc != 0 ) { # fehler }

siehe <!--perldoc_f1--><a href="http://faq.perl-community.de/bin/view/Perldoc/perl..." target="_blank"><img alt="perldoc " src="/iB_html/non-cgi/Skin/SKIN-3/images/perldoc.gif" border="0"> <!--perldoc_f2-->-f system<!--perldoc_f3--></a><!--perldoc_f4--> fuer weitere Infos
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2007-05-29 15:58.