( sunmao | 2011. 12. 05., h – 10:41 )

Köszi a gyors választ, valóban ez a gond!

Sajnos én nem vagyok egy perl mester, de egy lehetséges megoldás:

use File::Basename;

$lfile = fileparse($basefile,'\..*') . ".o";

Ehhez viszont be kell húzni, a File:Basename osztályt, vagy mit (nem tudom mi van perl-ben... :) ). Lehet kicsit overkill, szóval ha valaki tud egy egysoros regexp-es megoldást, az ne habozzon. Mondjuk ez azért jó mert a perl saját kódja és biztos működik minden esetben, minden oprendszer alatt.

Amúgy a beépített parser alapján:

$lfile = ($basefile =~ s!^.*/([^/]*)$!\1!);

Ezzel annyi a baj, hogy a fájl nevet kiterjesztéssel adja vissza és hogy az eredményt nem az $lfile-ba pakolja, hanem kicseréli a $basefile értékét. Gondolom ez az s operátor miatt van. De nem tudtam átírni, úgy, hogy csak a fájl nevét adja vissza kiterjesztés nélkül és az értéket az $lfile-ba írja, mert ha az s-t kitörlöm az elejéről syntax error-t kapok.

Nem foglalkoztam a dologgal sokat, csak keresni akartam egy működő megoldást.