Hi all,
I'm trying to do something I see as relatively simple.
I would like to call a function that declares a few variables and then runs
some XML::Twig processes which in turn access & update said original
variables.
But I'm getting an error from my twig functions when they try to access the
before-defined variables.
Right now my code is looking a little something like:
main();
sub main {
my $catalog_timestamp;
my $objinfo_timestamp;
my %fields;
open(my $cataloginfo_fh, "catalog.xml") || die "Could not open
catalog.xml for reading: $!\n";
open(my $objinfo_fh, "objinfo.xml") || die "Could not open
objinfo.xml for reading: $!\n";
open(my $new_fh, ">output.csv") || die "could not write to
output.csv\n";
# Need to get the header info first, to be able to make the haeder line.
# Only go hrough the file if something was submit for that file.
if (defined $cataloginfo_fh) {
my $catalog_settings = XML::Twig->new(
twig_handlers => {
'Item' => \&get_catalog_field_names,
'Catalog' => \&get_catalog_timestamp,
}
);
$catalog_settings->parse($cataloginfo_fh);
}
if (defined $objinfo_fh) {
my $objinfo_settings = XML::Twig->new(
twig_handlers => {
'Product' => \&get_objinfo_field_names,
'Published' => \&get_objinfo_timestamp,
}
);
$objinfo_settings->parse($objinfo_fh);
}
close($cataloginfo_fh);
close($objinfo_fh);
close($new_fh);
}
An example of the twig functions:
sub get_catalog_timestamp {
my ($twig, $elt) = @_;
# get the PublishTimeStamp attribute
$catalog_timestamp = $elt->att('PublishTimestamp');
$twig->purge();
}
However I get an error from this.
"Global symbol "$catalog_timestamp" requires explicit package name"
The error references the "$catalog_timestamp =
$elt->att('PublishTimestamp');" line.
I kind of get the feeling I'm doing a stupid perl mistake.
But I clearly do not know what.
Any help would be very much appreciated.
thanks.
--Alex
_______________________________________________
Boston-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/boston-pm