Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Editing multiple xml files in perl with help of Getopt::Long and Globbing

by chidori (Novice)
on Nov 30, 2013 at 07:50 UTC ( #1065038=perlquestion: print w/ replies, xml ) Need Help??
chidori has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

I am using a perl script edit certain xml tags. Previously i was picking up the xml files one by one and running the code. But I thought it would be easy if i can edit all xml files in a single go.

Below is the part of my code
#!/usr/bin/perl use Getopt::Long; use XML::Twig; foreach my $xml(@file) { $twig->parsefile_inplace($xml); } sub getoption{ GetOptions ("file=s" => \$data,) or die("Error in command line argumen +ts\n"); @file=glob($data); #globbing to pick '*.xml' }
The code seems to work. But i would like to know if there is a better way to do and also if there is any pitfall the way i do it now.

Script calls

./script -f config.xml ./script -f '*.xml'

Comment on Editing multiple xml files in perl with help of Getopt::Long and Globbing
Select or Download Code
Re: Editing multiple xml files in perl with help of Getopt::Long and Globbing
by hippo (Curate) on Nov 30, 2013 at 11:08 UTC

    Unless you are doing something else with other options to the script which you aren't showing us, I don't see any reason for you to do the globbing in the script. Why not just use the shell's globbing instead? If you invoke the script with:

    ./script *.xml

    and handle this in your code with:

    while (my $file = shift @ARGV) { next unless -r $file; # Process the file here }

    would that not achieve the end result?

      Sorry , didn't mention in my intial post. Yes, i have other options that will get the date and another option to print the xml content. Thats why i didn't do shell globbing.

      Shell globbing isn't universal or portable. So in many cases, it's appropriate to expand globs within the Perl script using File::Glob or other mechanism. For example, in the Microsoft Windows shell (Command Prompt), wildcards are not as powerful or as useful as BSD-style globs; in particular, they can't be used to expand directories (folder), which makes them generally useless for my purposes. I invariably need my Perl scripts to permit their users to glob multiple folder names.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2014-09-21 14:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (172 votes), past polls