OVH Cloud OVH Cloud

File::stat

2 réponses
Avatar
Pierre-Yves
Hello,

lorsque j'exécute le code ci-dessous sur un fichier dont le nom contient des
accents (par exemple: matériel.txt), le script se plante et donne le message
d'erreur suivant :

Can't call method "mtime" on an undefined value at /blahblah/myScript.pl

J'utilise perl 5.8.1 sous Solaris 5.8



use File::stat;

$st = stat($file);
$mtime = $st->mtime;


Comment faire pour que ce code supporte les noms de fichiers qui contiennent
des caractères spéciaux ?


Merci,
Pierre-Yves.

2 réponses

Avatar
Paul Gaborit
À (at) Fri, 19 Nov 2004 17:31:12 +0100,
"Pierre-Yves" <pyu-at-belbone.be> écrivait (wrote):
lorsque j'exécute le code ci-dessous sur un fichier dont le nom contient des
accents (par exemple: matériel.txt), le script se plante et donne le message
d'erreur suivant :

Can't call method "mtime" on an undefined value at /blahblah/myScript.pl

J'utilise perl 5.8.1 sous Solaris 5.8

use File::stat;

$st = stat($file);
$mtime = $st->mtime;


Comment faire pour que ce code supporte les noms de fichiers qui contiennent
des caractères spéciaux ?


Vérifier l'encodage des accents :

1- sur le filesystem Solaris (ici, c'est iso-latin-1 mais je pense
que c'est configurable)

2- dans vos scripts Perl (utf8 ou iso-latin-1)

Ils doivent être les mêmes ou alors vous devez passer par du réencodage. Un
autre moyen serait de demander au système lui-même de vous fournir le nom (via
opendir par exemple).

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
Denis -esp2008-
Bonsoir,

$st = stat($file);
$mtime = $st->mtime;


Je ne vais pas re-répondre à la question, mais je signal au passage que
selon l'utilisation du script derrière, il peut être plus simple de
faire un -M sur le fichier.

--
Denis