Category Archives: Uncategorized

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'

Script to download a file in PHP

To make a file to download in php, we can use the following code :

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file_name));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file_name));
ob_clean();
flush();
readfile($file_name);

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 can we redeclare a class safely in PHP?

Basically PHP doesn’t allow re-declare a class directly. If you are in need to get re-declare a class in php, then I suggest you to write that class in a separate file and use require_one to call that file to the desired page. It’s as follows:

Page1.php

class abcd
{
    function max()
    {
        echo "Hello World!!! count:-".$GLOBALS['x'];
    }
}

Page2.php

$i=10; 
for($x=0;$x<$i;$x++)
{
      require_once "Page1.php";
      $myclass = new abcd();
      $myclass->max();
}

Now it will work as you desired. It worked for me.

The output will be as follows :

 Hello World!!! count:- 0
 Hello World!!! count:- 1
 Hello World!!! count:- 2
 Hello World!!! count:- 3
 Hello World!!! count:- 4
 Hello World!!! count:- 5
 Hello World!!! count:- 6
 Hello World!!! count:- 7
 Hello World!!! count:- 8
 Hello World!!! count:- 9