my $xml_obj = new XML::Smart( $xml ) ; my $hash_when_cat_eq_special = ( $xml_obj->{list}{value}( 'category', 'eq', 'special' )->pointer() ); #### $hash_when_cat_eq_special will contain: { "/nodes" => { parameter => 1 }, "/order" => ["category", "parameter"], "category" => "special", "parameter" => { "/order" => ["instance", "CONTENT"], "CONTENT" => "\n nameofparameter1\n ", "instance" => 0, }, } #### my $xml_obj = new XML::Smart( $xml ) ; my $param_contents = $xml_obj->{list}{value}( 'category', 'eq', 'special' )->{parameter}->content(); #### $param_contents will contain: "nameofparameter1"