Obtenir la taille du fichier avec-s en Perl
Je suis en train d'essayer de trouver la taille d'un fichier à l'aide de la -s
de l'opérateur. Il ressemble à ceci:
my $filesz = -s $filename
J'ai essayé beaucoup de différentes façon, mais il ne peut pas obtenir cette taille.
Cependant, si je donne un contenu statique à la place du nom de fichier, il fonctionne très bien
Par exemple:
$filesz = -s "/tmp/abc.txt"
Cela fonctionne bien.
J'ai essayé d'ajouter "
dans le nom de fichier, ça ne fonctionne pas. J'ai enlevé \n
de nom de fichier à l'aide de chomp
, mais le problème reste le même. Quel est le problème ici?
-s $filename if -e $filename
Avez-vous jamais imprimer le contenu de
$filename
pour voir si c'est ce que vous pensez que c'est?Je l'ai fait .. c'est juste que c'était \n qui n'était pas facilement visible 🙂
OriginalL'auteur Jack | 2010-08-24
Vous devez vous connecter pour publier un commentaire.
-s $filename
fonctionne très bien; la seule conclusion est qu'il n'y a aucun fichier avec le nom contenu dans$filename
. Prendre un regard très attentif au contenu de$filename
, et assurez-vous que votre répertoire de travail est ce que vous pensez qu'elle est.Semble que votre problème était en fait avec
\r
, pas\n
(et votre problème aurait été résolu par la:crlf
I/O de la couche, ce qui se traduit entre\r\n
et\n
). De toute façon, content que vous l'avez réglé.OriginalL'auteur hobbs
Comme dit hobbs, l'explication la plus probable est que
$filename
ne contient pas ce que vous pensez que cela fonctionne.Fondées sur l'expérience précédente, j'irais plus loin que ça et hésitez pas une supposition que
$filename
a un caractère de saut de ligne à la fin de celui-ci. Êtes-vous de lire la valeur dans$filename
à partir d'un fichier ou de la saisie de l'utilisateur?OriginalL'auteur Dave Cross
je pense que vous devriez essayer ce votre obtenir à partir d'une readdir:
OriginalL'auteur cfo