foreach my $xmlfile (@productfiles) { my $XML = XML::Smart->new($xmlfile) or warn("Unable to parse $xmlfile: $!"), next; $XML = $XML->cut_root(); next if (!defined $XML->{Product}{Code} || $XML->{Product}{Code}->content != 1); my $prodid = $XML->{Product}{ID}; my @features = @{$XML->{Product}{ProductFeature}}; foreach my $feature (@features) { my $cat_featureid = $feature->{CategoryFeature_ID}; my $value = $feature->{Presentation_Value}; my $sql = "INSERT INTO products_features (product_id, feature_id, value) VALUES (".$prodid.", ".$cat_featureid.", ".$dbh->quote($value).") ON DUPLICATE KEY UPDATE value=".$dbh->quote($value); $dbh->do($sql); print Dumper $sql; } undef $XML; $c_processed++; print "." if ($c_processed % 10 == 0); # indicate progress as operations can take a long time } print "$c_processed product feature values imported or updated.\n"; #### $VAR1 = 'INSERT INTO products_features (product_id, feature_id, value) VALUES (9589372, 34200, \'Brother HL3040\') ON DUPLICATE KEY UPDATE value=\'Brother HL3040\''; #### $VAR1 = 'INSERT INTO products_features (product_id, feature_id, value) VALUES (9589372, 41695, \'1\') ON DUPLICATE KEY UPDATE value=\'1\'';