Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Reading through a large bunch of files

by Dr Manhattan (Beadle)
on Aug 23, 2013 at 10:39 UTC ( #1050628=perlquestion: print w/ replies, xml ) Need Help??
Dr Manhattan has asked for the wisdom of the Perl Monks concerning the following question:

Hi all

I am having some problems with reading through a bunch of xml files in a directory and processing them. I am using File::Find and File::Copy. The problem seems to be that only 1 file is being processed and then the script stops before getting to the others

#!/usr/bin/perl use strict; use warnings; use utf8; use XML::Twig; use Data::Dumper; use File::Find; use File::Copy; use Cwd; my $dir = getcwd; my %size; my %hash; find(sub {$size{$File::Find::name} = -s if -f;}, "$dir"); foreach my $files (keys %size) { if ($files =~ /(.*)(\.xml)$/) { $hash{$1}++; } } #foreach my $x (keys %hash) #{ # print "$x\n"; #} foreach my $file (keys %hash) { my $twig = new XML::Twig(TwigRoots => {title => 1, text => 1}); $twig->parsefile("$file.xml"); + open(Output, ">:utf8", "$file 2.xml") or die "can't open file $!\n +"; $twig->root->print(\*Output); close (Output); }

Any ideas? Like I said the script works perfectly for the first file it reads, and then it just stops. When I run the foreach loop that I commented out, all the file names that is supposed to be there is there, so I have no idea whats wrong.

Thanx in advance for any help. Much appreciated

Comment on Reading through a large bunch of files
Download Code
Re: Reading through a large bunch of files
by choroba (Abbot) on Aug 23, 2013 at 11:03 UTC
    It works for me. What do you mean by "it just stops" - does it end? What is the exit status? Or does it hang?
    لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

      It reads in all of the files, processes the first file correctly as it should, then stop and exit without touching the other files

        I tried putting the xml files in a array instead

        my @filelist = (-f, <*.xml>); foreach my $file (@filelist) { print "Working on... $file\n"; my $twig = new XML::Twig(TwigRoots => {title => 1, text => 1}); $twig->parsefile($file); open(Output, ">:utf8", "2_$file") or die "can't open file $!\n"; + $twig->root->print(\*Output); close (Output); }

        And got the error message "Use of uninitialized value $_[0] in -f at C:/Perl/site/lib/XML/Twig.pm line 752."

Re: Reading through a large bunch of files
by Anonymous Monk on Aug 23, 2013 at 11:24 UTC

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (3)
As of 2014-10-02 02:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    What is your favourite meta-syntactic variable name?














    Results (43 votes), past polls