Forum Programmation.perl Chemin symbolique Vs chemin réel

Posté par  (site web personnel) .
Étiquettes : aucune
1
15
nov.
2009
Bonjour à tous.

J'ai un script Perl qui se balade dans les répertoires (c'est un script tout con de création de listes de lecture) et j'ai un problème de chemin symbolique avec Perl :
j'ai un répertoire /home/truc/mp3* dont j'ai fait un lien symbolique vers /home/luc/Desktop/mp3

Mon problème est que lorsque je lance le script Perl dans le lien (donc /home/luc/Desktop/mp3) et que je veux écrire les listes dans le répertoire supérieur, il remonte dans le répertoire réel, à savoir /home/truc/ .

J'aimerais savoir s'il y moyen que Perl fasse comme bash et me remonte dans le chemin symbolique.

La commande getcwd() me renvoie le chemin réel, de même qu'un appel à `pwd`. Le module que j'ai trouvé sur le net (File::Spec) me renvoie encore une fois la même chose...

Si quelqu'un a une idée, ce serait très sympa parce que là, je patauge gentiment dans la semoule.

Merci

* : Oui je sais, mp3 çapucestpalibre mais comme mon baladeur fait que ça et le wma, le choix est vite fait.
  • # Ne pas changer de répertoire

    Posté par  . Évalué à 4.

    Tu dois te tromper quelque part lorsque tu changes de répertoire avec Perl. Tu suis le chemin "réel" au lieu du chemin symbolique.
    Est-ce que ça le fait également via ton shell ?

    Quoi qu'il en soit, il ne faut pas changer de répertoire lorsque tu es dans un programme. Tu restes là où tu es. Au lieu de dire "je veux écrire le fichier toto.txt" tu dis "je veux écrire le fichier /home/truc/rep/toto.txt".
    • [^] # Re: Ne pas changer de répertoire

      Posté par  (site web personnel) . Évalué à 4.

      Je ne me trompe pas en changeant de répertoire : un simple chdir("..") suffit à faire du caca.
      De toute façon, même sans changer de répertoire, si je demande à Perl dans quel répertoire je me situe, il me renvoie le chemin "réel".

      Pour ce qui est de ne pas changer de répertoire, je ne fais effectivement pas de
      chdir("rep");
      open(FICHIER, ">", "fichier.m3u")

      mais bien
      open(FICHIER, ">", "rep/fichier.m3u")

      Seulement pour déterminer "rep" (si on entre ".." en argument du programme par exemple), je récupère toujours un chemin réel, que ce soit avec abs_path(".."), chdir("..") et cwd()...

      Et via mon shell ça ne se passe pas comme ça ! Pwd renvoie bien le chemin symbolique.
      Un de mes profs m'a dit que le shell est justement spécial par rapport à ça, histoire de faciliter la vie aux utilisateurs.

      Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.