?{} ca execute sans interpoler, ??{} ca execute et ca interpole, mais ces deux fonctions sont assez contreversées...
Mais normalement ca doit marcher... t'es sur Perl 5.8 ?
5.8.3
dailleurs on vient de tenter 2 trucs
Code :
if ($file->name =~ m/(??{$httpd_conf->DocumentRoot})/) {
print "true\n";
}
perl crash, core dump
Code :
if ($file->name =~ m/^(??{$httpd_conf->DocumentRoot})/) {
print "true\n";
}
pas de crash
burgergold
5$? va chez l'diable!
Posté le 09-04-2004 à 19:43:21
je viens meme de tester sous windows et ca ne fonctionne pas alors qu'en l'assignant à un variable $test, ca fonctionne
Code :
use strict;
use lib "E://projects/sdcbrm/projects/Common/dev/";
use Apache::httpd::conf;
my $httpd_conf = new Apache::httpd::conf("Z://httpd/httpd.conf" );
my $test = $httpd_conf->DocumentRoot;
if ("/web/htdocs" =~ m/^(??{$httpd_conf->DocumentRoot})\/?/) {
print "true\n";
}
pospos
Posté le 09-04-2004 à 19:58:04
ouai c'est pas super comme fonction, je les utilise pas perso.
regarde perlre pour plus de details (et pourkoi ca plante parfois)
c'est clair que dans ton cas autant passer par une variable
PS: dans ton exemple tu as oublié de changer ta regexp
burgergold
5$? va chez l'diable!
Posté le 09-04-2004 à 20:26:18
(??{ code }) WARNING: This extended regular expression feature is considered highly experimental, and may be changed or deleted without notice. A simplified version of the syntax may be introduced for commonly used idioms.