Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

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

Replies are listed 'Best First'.
Re: Reading through a large bunch of files
by choroba (Bishop) 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/ line 752."

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

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (7)
As of 2018-08-16 17:26 GMT
Find Nodes?
    Voting Booth?
    Asked to put a square peg in a round hole, I would:

    Results (169 votes). Check out past polls.