Articles
1. Print today's date and date after number of days
2. Convert all the sheets in an excel file to csv files
3. Convert tab separated column text file to SQL format
1. Print today's date and date after number of days

#!/usr/bin/perl

sub gettodaydate
{
  my $now = time();
  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($now);
  $year = $year + 1900;
  $mon += 1;
  #print "Formated date = $mday/$mon/$year\n";
  my $curdate=$mday."-".$mon."-".$year;
  return $curdate;
}

sub getfuturedate
{
  my $num = $_[0]; #date after $num days
  my $now = time();
  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($now);
  $year = $year + 1900;
  $mon += 1;
  my $secs_in_day = (3600 * 24); # seconds in hour * 24
  my $num_days_hence = $now + ($num * $secs_in_day);
  ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($num_days_hence);
  $year = $year + 1900;
  $mon += 1;
  my $futuredate=$mday."-".$mon."-".$year;
  return $futuredate;
}

$today=gettodaydate();
print "Today's date is :".$today."\n";
$futuredate = getfuturedate(90);
print "date after 90 days is :".$futuredate."\n";

Today's date is :18-8-2025
date after 90 days is :16-11-2025
2. Convert all the sheets in an excel file to csv files

#!/usr/bin/perl

use strict;
use Spreadsheet::ParseExcel;

sub exceltocv
{
  my $sourcename = shift @ARGV or die "invocation: $0 \n";
  my $source_excel = new Spreadsheet::ParseExcel;
  my $source_book = $source_excel->Parse($sourcename) or die "Could not open source Excel file $sourcename: $!";
  my $storage_book;

  foreach my $source_sheet_number (0 .. $source_book->{SheetCount}-1)
  {
    my $source_sheet = $source_book->{Worksheet}[$source_sheet_number];

    my $outfile = $source_sheet->{Name}.".csv";
    open(FHOUT, ">>:encoding(UTF-8)", $outfile) || die "Can't open UTF-8 encoded $outfile $!";

    print "--------- SHEET:", $source_sheet->{Name}, "\n";

    next unless defined $source_sheet->{MaxRow};
    next unless $source_sheet->{MinRow} <= $source_sheet->{MaxRow};
    next unless defined $source_sheet->{MaxCol};
    next unless $source_sheet->{MinCol} <= $source_sheet->{MaxCol};

    foreach my $row_index ($source_sheet->{MinRow} .. $source_sheet->{MaxRow})
    {
      foreach my $col_index ($source_sheet->{MinCol} .. $source_sheet->{MaxCol})
      {
        my $source_cell = $source_sheet->{Cells}[$row_index][$col_index];
        if ($source_cell)
        {
          print "( $row_index , $col_index ) =>", $source_cell->Value, "\t";
	  my $cellval = $source_cell->Value;
          $cellval =~ s/^\s+|\s+$//g;
          #print  $cellval, "\t";
          print  FHOUT $cellval,;
          if($col_index ne $source_sheet->{MaxCol})
          {
            print  FHOUT "\t";
          }
        }
      }
      if($row_index ne $source_sheet->{MaxRow})
      {
        print "\n";
        print  FHOUT "\n";
      }
    } 
    close(FHOUT);
  }
}

exceltocv();

print "done!\n";
3. Convert tab separated column text file to SQL format

#!/usr/bin/perl

# convert tab separated column file into sql format
#
# usage : convtxtfiletosqlformat.pl infile, tablename, outfile

sub convtxtfiletosqlformat
{
  $infile = $_[0];
  $tablename = $_[1];
  $outfile = $_[2];

  open(IFH, "<:encoding(UTF-8)", $infile) || die "Can't open UTF-8 encoded $infile $!";
  open(OFH, ">>:encoding(UTF-8)", $outfile) || die "Can't open UTF-8 encoded $outfile $!";

  while()
  {
      $content = "insert into $tablename values ";
      $content = $content."(";
      if (/^\s*$/)
      {
         next;
      }
      chomp($_);
      @fields = split(/[\t]/,$_);
      $size = @fields;
      if($size)
      {
         $count = 1;
         foreach (@fields)
         {
           $field = $_; 
           chomp($field);
           if ($field eq "null")
           {
              if($size eq $count)
              {
                 $content = $content."null),";
              }
              else
              {
                 $content = $content."null,";
              }
           }
           else
           {
              if($size eq $count)
              {
                $content = $content."'".$field."');";
              }
              else
              {
                $content = $content."'".$field."',";
              }
           }
           $count = $count + 1; 
         }
      }
   print OFH "$content\n";
  }
  close(IFH);
  close(OFH);
}

Text file
---------
null    One     1
null    Two     1
null    Three   1
null    Four    1
null    Five    1
null    Six     1
null    Seven   1
null    Eight   1
null    Nine    1
null    Ten     1
null    Eleven  1
null    Twelve  1

Output SQL file
---------------
insert into class values (null,'One','1');
insert into class values (null,'Two','1');
insert into class values (null,'Three','1');
insert into class values (null,'Four','1');
insert into class values (null,'Five','1');
insert into class values (null,'Six','1');
insert into class values (null,'Seven','1');
insert into class values (null,'Eight','1');
insert into class values (null,'Nine','1');
insert into class values (null,'Ten','1');
insert into class values (null,'Eleven','1');
insert into class values (null,'Twelve','1');