rbi has asked for the wisdom of the Perl Monks concerning the following question:
use strict; use warnings; use Data::Dumper; my $var = '<Country><![CDATA[US]]></Country>'; $var = unwrap_cdata($var); print $var."\n"; my $hash = { america => '<Country><![CDATA[US]]></Country>', europe => ['<Country><![CDATA[IT]]></Country>','<Co +untry><![CDATA[UK]]></Country>'], }; print Dumper $hash; $hash = unwrap_cdata($hash); print Dumper $hash; sub unwrap_cdata { my $var = shift(); if (ref($var)) { $var = unwrap_hash($var) if (ref($var) eq 'HASH'); $var = unwrap_array($var) if (ref($var) eq 'ARRAY'); } else { $var = unwrap_scalar($var); } return $var; } sub unwrap_hash { my $href = shift(); foreach my $key (keys %{$href}) { my $hk = $href->{$key}; $hk = unwrap_hash($hk) if (ref($hk) eq 'HASH'); $hk = unwrap_array($hk) if (ref($hk) eq 'ARRAY'); $hk = unwrap_scalar($hk) if (not ref($hk)); $href->{$key} = $hk; } return $href; } sub unwrap_array { my $aref = shift(); my @array; my $i = -1; foreach my $av (@{$aref}) { $av = unwrap_hash($av) if (ref($av) eq 'HASH'); $av = unwrap_array($av) if (ref($av) eq 'ARRAY'); $av = unwrap_scalar($av) if (not ref($av)); push @array,$av; } return \@array; } sub unwrap_scalar { my $var = shift(); $var =~ s/<!\[CDATA\[//; $var =~ s/<!\[CDATA\[//; $var =~ s/]]>//; $var =~ s/]]>//; return $var; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Search and substitute into data structures
by Sidhekin (Priest) on Apr 30, 2007 at 19:05 UTC | |
by rbi (Monk) on Apr 30, 2007 at 19:26 UTC | |
by Sidhekin (Priest) on Apr 30, 2007 at 19:47 UTC | |
|
Re: Search and substitute into data structures
by merlyn (Sage) on Apr 30, 2007 at 18:52 UTC | |
by rbi (Monk) on Apr 30, 2007 at 18:55 UTC | |
|
Re: Search and substitute into data structures
by jwkrahn (Abbot) on Apr 30, 2007 at 19:59 UTC | |
|
Re: Search and substitute into data structures
by ferreira (Chaplain) on Apr 30, 2007 at 19:04 UTC |