Schrift
[thread]7311[/thread]

bräuchte hilfe bei einem regulären Ausdruck



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
Matze
 2005-09-27 20:32
#58414 #58414
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich weiß nicht genau obs am regulären Ausdruck liegt, oder an meinem system().
Aber auf jeden Fall stimmt da was nicht.
Das Programm funktioniert zwar, nur wird der system nicht ausgeführt.
Seht euch das mal an:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
  if ($var =~ /^(pl)|(ptk) (.+\.(pl)|(ptk))$/i) {       # $var ist die Eingabe
   if (-e $1) {
     system ("start $1");
   }
   else {
     my $f = $var2 . "/" . $1;        # $var2 ist ein Pfad der gesetzt sein kann
     if (-e $f) {
       system ("start $f");
     }
   }
 }


Ich finde einfach den Fehler nicht. . .

MfG. Matze\n\n

<!--EDIT|Matze|1127838767-->
Mit freundlichen Grüßen: Matze
vayu
 2005-09-27 21:03
#58415 #58415
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
solltest schon sagen was genau du matchen willst mit dem regex :)

und ich würd

Code: (dl )
1
2
if(defined($1)) {
}


schreiben\n\n

<!--EDIT|vayu|1127840826-->
Relais
 2005-09-27 21:10
#58416 #58416
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Matze,27.09.2005, 18:32]
Code: (dl )
1
2
  if ($var =~ /^(pl)|(ptk) (.+\.(pl)|(ptk))$/i) {       # $var ist die Eingabe
...
[/quote]
Dann teste doch erstmal den Ausdruck!

Bist Du Dir bewußt, daß der Ausdruck zwar großartig aussieht, aber nur "pl" und "ptk" in $1 finden kann?

Wenn es keine dieser Dateien im Arbeitsverzeichnis des Skripts gibt, dann schlägt das erste if ( -e $1 ) schon fehl. Vielleicht solltest Du auch lieber if ( -x $1 ) testen, denn Du willst die Datei ja ausführen.

Siehe perldoc -f -X für die Tests und was sie bedeuten.

Wenn $var "ein Pfad der gesetzt sein kann" ist, was passiert, wenn es nicht gesetzt ist? Dann suchst Du plötzlich nach "/pl" und "/ptk".
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
pKai
 2005-09-27 23:07
#58417 #58417
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Das ist ein beliebter Fehler...
Die Zuordnung der $1,$2,... zu den Klammern ist statisch!
D. h. hier ist $1 entweder "pl" oder undef (wenn am Anfang "ptk" stand, was sich in dem Fall in $2 wiederfindet).\n\n

<!--EDIT|pKai|1127848090-->
I sense a soul in search of answers.
renee
 2005-09-28 10:52
#58418 #58418
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Aufwas willst Du eigentlich genau prüfen und machen?? Der Code oben scheint mir relativ konfus zu sein...
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/
sesth
 2005-09-28 11:20
#58419 #58419
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Ein weiteres Problem dürfte der Aufruf des (Windows) START Befehls sein.
Code: (dl )
1
2
3
4
START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [command/program]
[parameters]

Demnach ist der erste Parameter der "title" des Fensters. Außerdem würde ich den "command/program" Parameter grundsätzlich in Quotes einschließen, da Du nicht ausschließen kannst, dass der Pfad Leerzeichen enthält.
Gruß
Thomas
renee
 2005-09-28 11:26
#58420 #58420
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Der "Titel" ist optional... Wenn nur ein Parameter angegeben ist wird es wohl als command/program interpretiert!
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/
sesth
 2005-09-28 11:34
#58421 #58421
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
In Verbindung mit Leerzeichen im Command kann da alles mögliche rauskommen. Der Title im Befehl wird vermutlich auch an den Quotes erkannt - verwendet man die aber auch im Command wird es problematisch. Deshalb hab ich mir angewöhnt, grundsätzlich einen Title anzugeben und das Command zu quoten.
Gruß
Thomas
Crian
 2005-09-28 16:08
#58422 #58422
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Matze sollte schreiben, was er genau erreichen will, losgelöst von dem angefangenen Lösungsversuch. Dann kann man besser helfen.
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
renee
 2005-09-28 16:35
#58423 #58423
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Crian,28.09.2005, 14:08]Matze sollte schreiben, was er genau erreichen will, losgelöst von dem angefangenen Lösungsversuch. Dann kann man besser helfen.[/quote]
Hab ich schon mal gesagt, aber auf mich hört ja keiner *heul*
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 >| >> 17 Einträge, 2 Seiten



View all threads created 2005-09-27 20:32.