Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: A regarding glob

by LanX (Canon)
on May 16, 2013 at 18:26 UTC ( #1033883=note: print w/ replies, xml ) Need Help??


in reply to Q regarding glob

please use <code> tags around your code.

> Is there any easy way to get it?

No, not what you intend with "easy"!

Use a regex or split or substr to isolate what you wanted from the full path

edit

DB<106> $head="/tmp/";$tail="/foo/file" => "/foo/file" DB<107> $path= <$head*$tail> => "/tmp/bla/foo/file" DB<108> ($middle) = $path =~ /^\Q$head\E(.*)\Q$tail\E$/ => "bla"

Easy enough! (?)

update

FWIW a one liner:

DB<109> ($middle) = <$head*$tail> =~ /^\Q$head\E(.*)\Q$tail\E$/ => "bla"

update
added quotemeta

update

Not sure if I misunderstood your question or if you phrasing is just fuzzy. What are folder names inside dir2 ?

Cheers Rolf

( addicted to the Perl Programming Language)


Comment on Re: A regarding glob
Select or Download Code
Re^2: A regarding glob
by arunagiri (Initiate) on May 17, 2013 at 00:19 UTC
    Sorry if I didn't mention it clearly. There are many folders inside dir2. Eg: A1, B1, C1 etc: are the folder inside dir2. only A1 and B1 folders have a file names "hello.txt" Hence, I want only the names of A1 and B1. If I do glob from some other folder like glob ("../../dir1/dir2/*/hello.txt") How can I get the only folders A1 and B1. I am going through the various suggestions that you guys gave. I will try them out. Thanks
      > Sorry if I didn't mention it clearly.

      Sorry still not clear! (And unfortunately you didn't update your posts with code-tags either).

      2 possibilities:

      • If you want the whole sub-path which fills into the wild-card, then the demonstrated code is already perfect. Try it out.

      • If you're only interested in the highest level folder do a @folders = split '/', $path for every path found by your glob and just take $folder[$index], where index is the number of folders in the "head" part.

        E.g 4 for "../../dir1/dir2/" will give you the next directory after "dir2".

      HTH! =)

      Cheers Rolf

      ( addicted to the Perl Programming Language)

        I find the solution easier with both split and

         $element =~ m!dir1/dir2/(.*)/dir3/filename!;
        Thanks for your time.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1033883]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (13)
As of 2014-12-19 13:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (83 votes), past polls