Enough people have already focused on your wrong assumption of what you put in your path string ("$key), and thus why it cannot possibly work as you intended.

But, Perl being the TIMTOWTDI language that it is, I'd like to point out to a different approach, and that is using the modules File::Spec (or its procedural variant File::Spec::Functions), and possibly File::Basename for extracting the full directory and path and the base filename, from a path.

Specifically, you could use abs2rel, like this:

my $key = "C:\\abc\\dfg"; my @example = ("C:\\abc\\dfg\\axy", "C:\\abc\\dfg\\#\@\$#\@\$\@\\hwllo +"); use File::Spec::Functions qw(abs2rel); foreach (@example) { my $rel = abs2rel($_, $key); printf "in: %s\nout: %s\n\n", $_, $rel; }
Result:
in: C:\abc\dfg\axy out: axy in: C:\abc\dfg\#@$#@$@\hwllo out: #@$#@$@\hwllo
I believe that's something you can start out with.

Furthermore, if you're interested in getting the top level directory (?) name from that result, you can use the function splitdir from File::Spec::Functions:

# modified source use File::Spec::Functions qw(abs2rel splitdir); foreach (@example) { my $rel = abs2rel($_, $key); my($topdir) = splitdir($rel); printf "in: %s\nout: %s\ntop directory: %s\n\n", $_, $rel, $topdir +; }
New output:
in: C:\abc\dfg\axy out: axy top directory: axy in: C:\abc\dfg\#@$#@$@\hwllo out: #@$#@$@\hwllo top directory: #@$#@$@

In reply to Re: unable to fomulate right regular expression to fetch the intermediate and last word from a line (windows path) using delimiter "\" by bart
in thread unable to fomulate right regular expression to fetch the intermediate and last word from a line (windows path) using delimiter "\" by suniln

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.