es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Perl: Cómo obtener el valor no resuelto de un enlace simbólico en $Bin?

Tengo un script ubicado en la siguiente dirección: “/home/ppp/testing/dir3/script1.pl”, donde “testing” es un enlace simbólico que apunta a dir1/dir2 (testing -> dir1/dir2).

Es decir, la ruta resuelta de script1.pl es “/home/ppp/dir1/dir2/dir3/script1.pl”.

Ahora, en mi script1.pl, he utilizado $Bin donde quiero que el valor de $Bin sea /home/ppp/testing/dir3. Pero, $Bin está almacenando el valor como /home/ppp/dir1/dir2/dir3 (está resolviendo el valor del enlace simbólico).

El fragmento de código es el siguiente:

use FindBin qw($Bin $RealBin);
print “Valor de bin es $Bin\n”;

Salida: Valor de bin es /home/ppp/dir1/dir2/dir3
Pero quiero: Valor de bin es /home/ppp/testing/dir3

¿Cómo puedo lograr esto? En resumen, quiero el valor no resuelto del enlace simbólico en $Bin.

No puedo utilizar el módulo Path::Tiny, ya que no está instalado en mi sistema y no tengo autorización para instalar ningún módulo.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Una forma de lograr esto es utilizando el comando readlink en Linux. A continuación se muestra un fragmento de código modificado:

    use FindBin qw($RealBin);
    my $Bin = readlink($RealBin) || $RealBin;
    print "El valor de bin es $Bin\n";
    

    Esto verificará si $RealBin es un enlace simbólico y, de ser así, devolverá la ruta no resuelta del enlace simbólico. Si $RealBin no es un enlace simbólico, solo devolverá su propia ruta.

Comments are closed.