perl - Change symbolic links -


i need change symbolic links in given directory use shortest relative path.

example: change

kat/../kat/link 

or

usr/sth/sth/kat/link 

into

kat/link 

how can using perl?

you can simplified path using abs_path , removing current directory make relative:

use warnings; use strict; use cwd qw/getcwd abs_path/;  $silly_path = 'foo/../foo/../foo/../foo';  $simplified = abs_path($silly_path); $cwd = getcwd();  print "canonical path: $simplified\n"; print "current directory: $cwd\n";  $simplified =~ s|^\q$cwd/||;    #make relative if within current directory.  print "simplified path: $simplified\n"; 

this assumes links in perl's current working directory. replace directory if want. result in relative path link within current directory, or simplified absolute path points outside current directory.

you can files in directory using glob, use -l $file file test operator test if $file symbolic link.


Comments

Popular posts from this blog

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -

node.js - Bad Request - node js ajax post -