Tag Archives: Perl Scripts

How to check availability of a folder in perl?

We can check the availability of a folder using Perl as follows :

if(-d "cgi-bin")
{
          # directory called cgi-bin exists
}
elsif(-e "cgi-bin")
{
          # cgi-bin exists but is not a directory
}
else 
{
          # nothing called cgi-bin exists
}

As a note, -e doesn’t distinguish between files and directories. To check if something exists and is a plain file, use -f.

is_array in perl?

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";
    }
}

How to fix the number of values after the decimal?

It can be done as follows :

sprintf '%.2f', '10.0500000'

Linux System Command to Zip Files

The linux system command to create zip single or multiple files are as follows :

zip zip_file_name.zip file_name1.ext file_name2.ext file_name3.ext

If the files are in another folder and you see those file names if the downloaded zip file in which you wish not to see these files, then use the following command :

zip zip_file_name.zip file_name1.ext file_name2.ext file_name3.ext

How search a string in an array?

To search a content in an array in perl, we can use the following format,

my @a=('Hai','Leop','mac');
my @b = grep(/a/i, @a);
print join ",",@b;

The output will be as follows:

Hai,mac