Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: asterisk use

by davido (Cardinal)
on Jan 10, 2007 at 19:26 UTC ( [id://593991]=note: print w/replies, xml ) Need Help??


in reply to asterisk use

Those are typeglobs, and are being used to make aliases to variables embedded within the File::Find module.

For example, $name will be an alias to $File::Find::name.

That way, the package global, $name, which presumably resides in package main (otherwise known as $main::name) will be the same variable as $File::Find::name; a package global in the File::Find module.


Dave

Replies are listed 'Best First'.
Re^2: asterisk use
by madbombX (Hermit) on Jan 10, 2007 at 21:59 UTC
    To slightly extend davido's explanation with a more concrete example (because that's how I learn anyway):

    This first example uses the full variable name to find all instances of mail.log.* in the current directory and pushes the results on @files.

    use File::Find; find( sub { push @files, $File::Find::name if -f && /mail.log.*/ }, '. +');

    This second example does the same thing only using the glob'd version of the variable name.

    use File::Find; use vars qw/*name/; *name = *File::Find::name; find( sub { push @files, $name if -f && /mail.log.*/ }, '.');
      In the subroutine named "wanted" that find2perl creates there is usage of the "&&" operator. If I understand it correctly, it's evaluating each expression, and if they evaluate to "true" it prints $name. Is the last "&&" necessary? There are no expressions after it; just goes to the print statement.

      sub wanted { my ($dev,$ino,$mode,$nlink,$uid,$gid); (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && -d _ && print("$name\n"); }
        $foo && $bar && print "something"; is equivalent to print "something" if $foo && $bar;. The last && is necessary in your code because only that makes the whole thing one expression.

        -- Hofmator

        Code written by Hofmator and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

      Thanks guys. I knew I read about this somewhere before. I just couldn't remember what it was. I haven't used globbing yet and I'm pretty new to Perl.

      Your help is appreciated!

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (2)
As of 2024-04-24 23:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found