There is no predefined is_array subroutine in Perl. if you are in need of such a function use the below code.
sub is_array {
my ($ref) = @_;
# Firstly arrays need to be references, throw
# out non-references early.
return 0 unless ref $ref;
# Now try and eval a bit of code to treat the
# reference as an array. If it complains
# in the 'Not an ARRAY reference' then we're
# sure it's not an array, otherwise it was.
eval {
my $a = @$ref;
};
if ($@=~/^Not an ARRAY reference/)
{
return 0;
}
elsif ($@)
{
die "Unexpected error in eval: $@\n";
}
else
{
return 1;
}
}
Need of an example? It’s given below :
#!/usr/bin/perl -w
use warnings;
use XML::Simple;
my @file;
$file[0]= '
1000
12001
25000
';
$file[1]= '
1000s
12001x
';
foreach my $temp(@file)
{
my $test_data = XMLin($temp);
if(is_array($test_data->{proc}->{cpt}))
{
foreach my $dx (@{$test_data->{proc}->{cpt}})
{
print $dx."\n";
}
}
else
{
print $test_data->{proc}->{cpt}."\n";
}
}
Like this:
Like Loading...
You must be logged in to post a comment.