Hi Amit
The code really works but with a tiny flaw.
If the path is "/a/b/../../c", the result would be "/a/../c" rather than
"/c". So I need to loop to clean up the dot-dot if tied up
Thank you for the suggestion
Hi
The code would be something like this :-
[root@ ~]# cat t.pl
#!/usr/bin/perl
$str = "/a/b/./c/../d";
$str1 = $str;
print "\nstr = [$str]";
print "\nstr1 = [$str1]";
print "\n---------------------------------------------------";
$str1 =~ s/([^\/]+)\/\.\.\/([^\/]+)/$2/g;
print "\nstr = [$str]";
print "\nstr1 = [$str1]";
print "\n---------------------------------------------------";
$str1 =~ s/\.\/([^\/]+)/$1/g;
print "\nstr = [$str]";
print "\nstr1 = [$str1]";
print "\n---------------------------------------------------";
print "\nHave a nice day !!!\n";
[root@ ~]# perl t.pl
str = [/a/b/./c/../d]
str1 = [/a/b/./c/../d]
---------------------------------------------------
str = [/a/b/./c/../d]
str1 = [/a/b/./d]
---------------------------------------------------
str = [/a/b/./c/../d]
str1 = [/a/b/d]
---------------------------------------------------
Have a nice day !!!
Regards,
Amit Saxena
On Wed, Jul 2, 2008 at 7:03 PM, Chen Yue <[EMAIL PROTECTED]> wrote:
Hi
I have a file containing UNIX-styled Path in each line. But the path is
simplified enough. Some of them has ".." and "." in the middle, such as
"/a/b/./c/../d".
Now I want to simplify each Path according to Unix tradition.
/a/b/./c/../d -> /a/b/d
The only way I could think out is to split the path and reconstruct them in
reverse order. But I don't think it is a smart solution. Is there a quick
way to employ regexp or a library to fix this?
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/