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

if-anweisung kompakter schreiben !!!

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Gast Gast
 2007-11-03 14:22
#101740 #101740
gibt eine möglichkeit dieses anweisung kompakter zu schreiben ?

Code (perl): (dl )
if( ($line =~ /^Context/) && ($logFile =~ /webapp/ || $logFile =~ /^logfile/ || $logFile =~ /^inoutput/)){


ist dieser regex-ausdrück richtig ?

Code (perl): (dl )
1
2
3
if ($line=~(^Context|webapp|^logfile|^inoutput)) {
mach was
}
mr-sansibar
 2007-11-03 14:23
#101741 #101741
User since
2006-04-13
90 Artikel
BenutzerIn
[default_avatar]
gibt eine möglichkeit dieses anweisung kompakter zu schreiben ?

Code (perl): (dl )
if( ($line =~ /^Context/) && ($logFile =~ /webapp/ || $logFile =~ /^logfile/ || $logFile =~ /^inoutput/)){


ist dieser regex-ausdrück richtig ?

Code (perl): (dl )
1
2
3
if ($line=~(^Context|webapp|^logfile|^inoutput)) {
mach was
}
moritz
 2007-11-03 15:19
#101743 #101743
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Du matchst gegen zwei Variablen, $line und $logFile. Die Matches gegen $logFile kann man tatsächlich mit
Code: (dl )
$logFile =~ m/^(?:webapp|logfile|inoutput)/

zusammenfassen, aber den match gegen $line muss man trotzdem noch durchführen.
#Kein Kommentar
 2007-11-03 15:25
#101744 #101744
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
Code (perl): (dl )
1
2
3
foreach ($line, $logFile){
        tuwas if (/^(?:webapp|logfile|inoutput)/);
}


könnte man nehmen

\\edit: UPS, das ist total falsch, habe es anders verstanden, sorry
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
topeg
 2007-11-03 15:57
#101752 #101752
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
vereinfachung:
Code (perl): (dl )
if( $line =~ /^Context/ && $logFile =~ /^logfile|^inoutput|webapp/ ){
renee
 2007-11-03 16:09
#101758 #101758
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ihr überseht, dass webapp irgendwo stehen darf und nicht mit ^ verankert ist...
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/
topeg
 2007-11-03 16:19
#101761 #101761
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Das habe ich beachtet. Das oder "|" umspannt die gesamte Regexp. und nicht nur einen Teil davon.
renee
 2007-11-03 16:25
#101766 #101766
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
topeg+2007-11-03 15:19:01--
Das habe ich beachtet. Das oder "|" umspannt die gesamte Regexp. und nicht nur einen Teil davon.

Dein Beitrag war noch nicht da, als ich den Thread geöffnet habe...
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/
Asterix
 2007-11-04 16:36
#101835 #101835
User since
2007-11-03
9 Artikel
BenutzerIn
[default_avatar]
Jede if Anweisung kann man m.E. durchaus mit den folgenden Kombination ersetzen:
Bedinging && MachDies
oder weitergehend
Bedingung ? MachDies : MachJenes
oder tiefer verschachtelt
Bedingung && do { ... }
oder
Bedingung ? do { ... } : do { ... }
usw.
Ich bilde mir sogar ein, dass der Code damit schneller ausgeführt wird - kann das jemand bestätigen?
moritz
 2007-11-04 17:37
#101836 #101836
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Man könnte jetzt wieder anfangen, über Mikrooptimierungen zu streiten, aber ich finde
Code: (dl )
1
2
3
if ($cond) {
# much code here
}

sehr viel lesbarer als

Code: (dl )
1
2
3
$cond && do {
# much code here
}
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-11-03 14:22.