use XML::Twig; use Data::Dumper; my $xml=$ARGV[0]; my $tag_name=$ARGV[1]; my $att_name=$ARGV[2]; my $att_value=$ARGV[3]; my $tag_text=$ARGV[4]; my $twig = XML::Twig->new(twig_roots => {$tag_name => \&select_change},); $twig->parsefile($xml); $twig->print; $twig->flush; sub select_change { my($twig,$tag_name)=@_; if ($tag_name->att($att_name) =~ $att_value) { $tag_name->set_text($tag_text); } }