Adding timestap to filename using perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Adding timestap to filename using perl
# 1  
Old 03-06-2015
Adding timestap to filename using perl

Hello,

I am trying to create a file in windows and i want the filename to have timestamp as well but something is wrong and i can not understand waht. The code that i use is the following

Code:
($cwkday,$cmonth,$cday,$ctime,$cyear) = split(/\s+/, localtime);
 $current_date = $cday."/".$cmonth."/".$cyear." ".$ctime;

 if($index==0)
   { 
      #Create the first line of the new file
      print("Creating the first line of the new file \n");
      push(@array,'Account_id');
      push(@array,'Subscriber_id');
      push(@array,'Package_id');
      push(@array,'effective_date');
      push(@array,'Expiration_date');
      # open (OUTPUT_FILE, '>>C:\perl\output\proration.$cyear$cmonth$cday.txt')||die "$!";
      open (OUTPUT_FILE, '>>C:\Users\christos.rovolis\Desktop\perl\output\proration_$current_date.txt')||die "$!";
      print OUTPUT_FILE (join ("|", @array), "\n");
      $index++;
   }

Using the above code i receive as filename the
proration_$current_date.txt

I tried to use "" instead '' but with no luck

Thank you for your help,
# 2  
Old 03-06-2015
Your $current_date is in human readable format (6/Mar/2015 19:07:00). If you try to create a file using such a format, with the spaces in between the date, perl assumes in it's open routine that these are multiple arguments and it will fail. To rectify this, use the following format YYYYmmdd_HHmmss

Code:
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
# Build current_date in YYYYmmdd_HHmmss format
$current_date = $year+1900 . sprintf("%02d",$mon+1) . sprintf("%02d", $mday) . "_" . sprintf("%02d", $hour) . sprintf("%02d", $min) . sprintf("%02d", $sec);

print "$current_date\n";
$index=0;
 if($index==0)
   { 
      #Create the first line of the new file
      print("Creating the first line of the new file \n");
      push(@array,'Account_id');
      push(@array,'Subscriber_id');
      push(@array,'Package_id');
      push(@array,'effective_date');
      push(@array,'Expiration_date');
      # open (OUTPUT_FILE, '>>C:\perl\output\proration.$cyear$cmonth$cday.txt')||die "$!";
      open (OUTPUT_FILE, ">>proration_$current_date.txt")||die "$!";
      print OUTPUT_FILE (join ("|", @array), "\n");
      $index++;
   }

This User Gave Thanks to balajesuri For This Post:
# 3  
Old 03-06-2015
Balajesury thank you for your help.

I used the code that you send me andthe problem is with the following line:
open (OUTPUT_FILE, ">>proration_$current_date.txt")||die "$!";

when i use double quotes i get the error 'Invalid argument'

If i use single quotes the date is not printed. Maybe is something related to windows?

Kind Regards
# 4  
Old 03-06-2015
Before you use it in the open routine, could you try to print it. It'll give you an idea if the filename is being built properly or not. Say something like this:

Code:
$filename = "C:\whatever\$current_date.txt";
print "$filename\n";

# 5  
Old 03-09-2015
Hello,

When i use:
my $filename="C:\Users\christos.rovolis\Desktop\perl\output\proration_$current_date.txt";
the print of the $filename gives the following output which is incorrect:
C:SERRISTOS.ROVOLISDESKTOPPERLOUTPUTPRORATION_9MAR201513:23:30.TXT
while when i use single quotes in print:
$filename='C:\Users\christos.rovolis\Desktop\perl\output\proration_$current_date.txt'

I get: C:\Users\christos.rovolis\Desktop\perl\output\proration_$current_date.txt

---------- Post updated at 06:55 AM ---------- Previous update was at 06:28 AM ----------

But i think that the problem is in the open function, even if i use the following code


my $number=123;
open (OUTPUT_FILE, ">>proration_$number.txt")||die "$!";


if i use double quotes i get an error and if i use single quotes i get as the name of the file:
proration_$number.txt
# 6  
Old 03-10-2015
Sorry about that.. it's the classic problem with representing path (and a quite common rookie mistake :-) ). If you use one backslash in front of a character, it may be interpreted as an escape character. So you need to escape the escape character behaviour by introducing another backslash.. so, the right way to do it would be:

Code:
$filename = "C:\\Users\\christos.rovolis\\Desktop\\perl\\output\\proration_$current_date.txt";

And single quotes are used in perl if you want to mean the literal sense of a string. Something like WYSIWYG in a variable. So $current_date will be exactly represented as $current_date inside a single quote. To interpret variables inside a string, use double quotes.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to put dot in timestap?

I have a string: Code time=20170303122334 I need the result: 20170303.122334 I did: CODE: ttdotss=`echo ${time} |sed 's\(.|{8\}\)/|1 /g'` Result sed: Function s\(.|{8\}\)/|1 /g cannot be parsed. Could you please help me to resolve this issue? Thanks for contribution (2 Replies)
Discussion started by: digioleg54
2 Replies

2. Shell Programming and Scripting

Adding Previous Month To Filename

Dear experts, I'm using solaris 5.10 and bash. I want to zip file "Amount.txt" to "Amount.zip" and rename it to "Amount_<prev_month>_<this year>.zip". For example, file for this month should be renamed to "Amount_06_2012.zip", for next month it should be "Amount_07_2012.zip". I have no problem... (8 Replies)
Discussion started by: kris.adrianto
8 Replies

3. UNIX for Dummies Questions & Answers

Adding Filename as column using sed

Hi , Can any one please tell me, how can we add the file name as column using sed. right now we are using the below awk command for adding the file name as column but when we are calling this script from datastage it is deleting the file data..very weird raised a support ticket with datastage.... (2 Replies)
Discussion started by: mora
2 Replies

4. Shell Programming and Scripting

Adding filename to each line of the file

Hi, I am a relative new bee in scripting. I need to develop a script such that the code would iterate through each file in a source directory and append every line of the file with '|' and the corresponding file filename. eg INPUT file IF927_1.dat - H|abc... (4 Replies)
Discussion started by: scripting_newbe
4 Replies

5. Shell Programming and Scripting

Help with adding leading zeros to a filename

Hi i need help in adding leading zero to filenames e.g file name in my folder are 1_234sd.txt 23_234sd.txt the output i need is 001_234sd.txt 023_234sd.txt can i do this shell scripting please help (2 Replies)
Discussion started by: rsmpk
2 Replies

6. UNIX for Dummies Questions & Answers

Adding Date & time stamps to filename

I need to edit the file name with date and time while writing the script. please help. (1 Reply)
Discussion started by: manish.s
1 Replies

7. Shell Programming and Scripting

change the filename by adding up 1 each time, tricky one

:confused: Hi, I posted here before for adding up of datafile name each time, here is an example: #!/bin/bash cutdfname="data11.dbf" newname=$(echo "${cutdfname}" |tr "" "" |tr "#_@-" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" |tr -s "x") num=$(echo $newname |cut -d"." -f1|awk... (5 Replies)
Discussion started by: netbanker
5 Replies

8. Shell Programming and Scripting

Grabing Date from filename and adding to the end of each line in the file.

Hi, I have 24 .dat files something like below. The file name starts with “abc” followed by two digit month and two digit year. Is there a way to grab the month and year from each filename and append it to the end of each line. Once this is done I want to combine all the files into file... (1 Reply)
Discussion started by: rkumar28
1 Replies

9. Shell Programming and Scripting

Adding filename into file content

Dear Experts, Please help to teach me how to add the filename into the file content. Actually the file name are EVENTS-20050912. ***************New output that I want*************** EVENTS-20050912 03:33:37 ALARM: BTSSPAN-277-1 30-18013 EVENTS-20050912 12:10:28 ALARM: BTSSPAN-297-2... (1 Reply)
Discussion started by: missutoomuch
1 Replies

10. Shell Programming and Scripting

How to adding the filename into file contents

Dear Experts, Please help to teach me how to add the filename into the file content so that i can get the output below:- Actually the file name ***************New output that I want*************** =====2005-11-12===== EVENTS-20050912 03:33:37 ALARM: BTSSPAN-277-1 30-18013... (2 Replies)
Discussion started by: missutoomuch
2 Replies
Login or Register to Ask a Question