Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Wildcards and Files

by pyro.699 (Novice)
on Apr 04, 2007 at 00:07 UTC ( #608170=perlquestion: print w/replies, xml ) Need Help??
pyro.699 has asked for the wisdom of the Perl Monks concerning the following question:

Hello, You know in dos, you can search for a file by typing *.* or *.txt, using * as a wildcard? well, im trying to do the same thing with my perl script. I did atempt this and got this far:
$file = $ARGV[0]; $find = $ARGV[1]; $replace = $ARGV[2]; @split = split(/\./, $file); opendir(DIR, "."); if ($file = /\*\.\*/) { @format = grep(/\./, readdir(DIR)); # *.* } if ($file = ".\.\*") { @format = grep($split[0]./\../, readdir(DIR)); # test.* } if ($file = "\*\..") { @format = grep(/.\./.$split[1], readdir(DIR)); # *.txt } if ($file = ".\..") { @format = grep($split[0]./\./.$split[1], readdir(DIR)); # te +st1.txt } $file_count = 0; for $file (@format) { ... } ...
I cannot get it working quite right, i want the user to have the ability to use one of the following: *.* *.ext file.* file.ext Thanks a ton ~Cody Woolaver

Replies are listed 'Best First'.
Re: Wildcards and Files
by imp (Priest) on Apr 04, 2007 at 00:16 UTC
Re: Wildcards and Files
by ferreira (Chaplain) on Apr 04, 2007 at 09:50 UTC

    Like imp said, first you expand the globs with glob function and then you do what you want with the result you got.

    my @files = glob('*.*'); # or 'test.*' or '*.txt' for my $file (@files) { # ... }
    As you mentioned DOS wildcards, maybe the semantics of glob that comes from Unix does not match exactly what you want. Then you should take a look at File::DosGlob.

    Another sidenote: $file = /\*\.\*/ and $file = ".\.\*" won't work. You're using the '=' operator when you'll want '=~' (match operator) or 'eq' (string comparison). But even so, $file =~ /\*\.\*/ will match more than you want, like 'a*.*b' and so $file eq '*.*' would be preferred.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://608170]
Approved by imp
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (5)
As of 2018-07-20 09:22 GMT
Find Nodes?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

    Results (427 votes). Check out past polls.