sziasztok!
van egy scriptem, ami paramétereket dolgoz fel és ennek van egy "nem várt" eredménye. a feldolgozás case szerkezeten keresztül megy. egyes esetekben két vagy-gyal kapcsolt eseményt vizsgálok és itt van egy hibám. azt akarom figyelni, hogy a paraméter "-d=" vagy "/d=" taggal kezdődik-e, vagy nem. ezt úgy csináltam, hogy
switch ($param) {
case /^[\-\/]d\=/i {parancs;}
}
ez elvben azt vizsgálná, hogy a paraméter "-d="-gel kezdődik-e, vagy hogy "/d="-gel. van négy ilyen kapcsolóm, ahol a "d" betű van lecserélve más-más betűre természetesen. ha nem vizsgálom azt, hogy ott-e az egyenlőség jel is, akkor működik (csak épp nem azt kapom, amit akarok...), ha 3 case-ben ott az egyenlőség jel, akkor még jó. ha viszont berakom a 4.-be is az egyenlőséget (először csak simán = volt ott, aztán gondoltam az a probléma, hogy az is valami regex, amit \= írással ki tudok kerülni), akkor viszont a program futása megakad "kilóméterekre onnan", syntaxis hibával (nyilván valamiképp felborítja a "páros jeleket".
a leginkább "vicces", hogy mivel ez egy subrutinban van feldolgozva, ezért szépen fogtam és, a javítás idejére, átmásoltam egy másik, üres scriptbe és ott próbáltam volna ki. ott viszont _hiba nélkül futott_. minden "páros jelet" átnéztem a kódban, nincs "páratlanul egyik se" (időzőjelek, kapcsols zárójelek, stb). bár már az is fura, hogy a sub áttéve egy "üres kódba" jól megy, az eredeti helyén meg nem. mintha "addigra elvesztené a fonalat a perl", vagy tudja fene...
találkozott már valaki ilyennel? ki lehet ezt valahogy javítani, vagy kerülni? amint lehagyom az = ellenőrzést is belőle, azonnal jó a "match", viszont nekem az is kell. mi a megoldás ilyenre?