Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Appending /*.* to default Perl variable $_

by geertvc (Sexton)
on May 26, 2020 at 07:35 UTC ( #11117265=perlquestion: print w/replies, xml ) Need Help??

geertvc has asked for the wisdom of the Perl Monks concerning the following question:

First time ever post here...

I have an array with directory names:
my @codeOutputDirs = ( "output/$harvester$flavour/layout", "output/$harvester$flavour/tabview", "output/$harvester$flavour/udw", "output/$harvester$flavour/values", "output/$harvester$flavour/udw/service", "output/$harvester$flavour/udw/cfg" );
The variables $harvester and $flavour are passed as parameters on the command line when calling the Perl script.

I want to use a for loop to go through the array and do some stuff like so:
make_path "output/$harvester$flavour/layout"; unlink glob "output/$harvester$flavour/layout/*.*";
And this, for each and every element in the array.

For this, I'm using the following Perl-ish (I guess?) way of traversing through each and every element of the array:
for (@codeOutputDirs) { make_path $_; unlink glob $_/*.*; }
The first command, make_path $_; is fine.
However, the second command has issues when I append /*.* to the default variable $_

Can someone tell me how to accomplish this using the correct syntax? Putting $_ between {} doesn't seem to be the solution.

Best,
--Geert

Replies are listed 'Best First'.
Re: Appending /*.* to default Perl variable $_
by Athanasius (Bishop) on May 26, 2020 at 07:47 UTC

    Hello geertvc, and welcome to the Monastery!

    The glob function expects an expression which evaluates to a string, so use either unlink glob "$_/*.*"; or unlink glob $_ . '/*.*';. (The latter form uses . as the concatenation operator.)

    BTW, “has issues” isn’t very informative! In future, please detail the warning or error message(s) you are getting.

    Hope that helps,

    Update: Added forward slash to the concatenation example. Thanks, AnomalousMonk!

    Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

      Thanks guys for the swift answer.

      Apologies too for not being punctual in my description. Will take it with me for the next question.

      Best,
      --Geert
Re: Appending /*.* to default Perl variable $_
by jwkrahn (Monsignor) on May 26, 2020 at 07:44 UTC

    You need to put that in quotes:

    unlink glob "$_/*.*";

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://11117265]
Approved by marto
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (9)
As of 2020-11-30 12:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?