in reply to Re: XML::Twig Help
in thread XML::Twig Help

roboticus-

Updated code is the following:

#!/usr/bin/perl print "Enter an input file, space, and output file\n"; use strict; use warnings; chomp(my $enter = <STDIN>); $_ = $enter; unless (m#.+\.nml .+\.xml#) {print "Unreadable input"; } my @fields = split(/ /, $enter, 9999); use XML::Twig; open (FILE, $fields[0]) or die "Can't open file"; my $file = <FILE>; my $t= XML::Twig->new( twig_roots => { "djn-geo" => 1}); $t->parsefile($file); open(STDOUT, ">$fields[1]"); $t->print;

Still not sure why the XML::Twig line isn't working, I copied it verbatim from an example, and just changed the tag

Thanks alot,

shravnk

Replies are listed 'Best First'.
Re^3: XML::Twig Help
by roboticus (Chancellor) on Jul 06, 2010 at 16:28 UTC

    shravnk:

    So you're prompting the user for a filename, and verifying that it contains ".nml" or ".xml". If it doesn't contain that, you print an error message and continue on. Hmmm....

    You really want to stop your program when you find a problem, so you should use the die function rather than print on line 8.

    Another problem is that with the expression you've given "foo.xml.abc.def" is a valid filename.

    After you open the file, you then read the first line of the file, and treat it as a filename to pass to parsefile. Unless your file contains the name of the XML file you're trying to process, that's going to be a bit of a problem...

    Also, you have *another* open statement you haven't checked yet...

    ...roboticus