Perl script variable to read shell command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl script variable to read shell command
# 1  
Old 10-08-2008
Perl script variable to read shell command

Solaris 10
Korn shell ksh,

Hi there,

I have figured out to get yesterday's date which is using the below command:
TZ=GMT+24; date +%d-%b-%Y to get the format of 30-Sep-2008 and
TZ=GMT+24; date +%Y%m%d to get the format of 20080930.

I need this two format. In my perl script below I need the variable of $date and $folder to have the above format. Below method don't work. Please help.


--------------------------------------------------------------------------
# FILENAME: collectLog-smtp.pl
# Version : 1.o
# Purpose : Collect log for the specify date
# Changes : n/a
#
# Editable settings
# Variable


my $date = `TZ=GMT+24 date +%d-%b-%Y`;
my $folder = `TZ=GMT+24 date +%Y%m%d`;
#my $date = "30-Sep-2008";
#my $folder = "20080930";


# DO NOT modify the below settings
my $row = "";
my $input = "/jes/dist/sbas-poc/report/" . $folder . "/smtp/smtp.mail.tmp";
my $output = "/jes/dist/sbas-poc/report/" . $folder . "/smtp/smtp.mail.log";

open(INFILE, "$input") or die "Cannot open input file";
open(OUTFILE1, ">$output") or die "Cannot open output file";

while (<INFILE>)
{

# 14x argument
# col[0] = date
# col[1] = timestamp
# col[2] = msg ID
# col[3] = source channel
# col[4] = either destination channel OR log status
# col[5] = either log status OR mail size
# col[6] = either mail size OR sender address
# col[7] = either sender OR rfc;recipient address
# col[8] = either rfc;recipient address OR recipient address

$row=$_;
@col = split /\s+/, $row;

if( $col[0] eq $date )
{
print OUTFILE1 "$row";
}

}
close INFILE;
close OUTFILE1;
--------------------------------------------------------------------------
# 2  
Old 10-08-2008
You need to chomp the output from backticks; it contains a trailing newline.

Beyond that, if it still doesn't work, it would be most helpful if you could say how it doesn't work.

(In the die message you should probably include the name of the file and the value of $!. -- this improves troubleshooting tremendously.)
# 3  
Old 10-08-2008
I totally agree with era. chomp() the scalars that store the output from the backticks and add the filename and $! to the die message. chomp() should resolve the problem though.
# 4  
Old 10-08-2008
Why do you need to call the date command to get a date?

Code:
my $date = `TZ=GMT+24 date +%d-%b-%Y`;
my $folder = `TZ=GMT+24 date +%Y%m%d`;

Since you are using Perl, use Perl's functions to get the date you want:

Code:
use POSIX qw(strftime);
my $date   = strftime("%d-%b-%Y", localtime());
my $folder = strftime("%Y%m%d", localtime());

For getting yesterday's date you can follow these simple instructions:
perlfaq4
# 5  
Old 10-10-2008
Thanks for the reply, I am noob in programming actually.

I saw this code from web:
Output is day.month.year (e.g. 31.12.2006):

perl -le '($D,$M,$Y)=(localtime(time-86400))[3,4,5];printf("%.2d.%.2d.%.4d",$D,++$M,$Y+=1900)'


May I know how can I apply to my code?(Is my colleague's code, I am learning to modify it. I need to assign the $date and $folder into yesterday's format)

Please help
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Usage of shell variable in perl command

Hi, I have a shell script, In which i have variable "var1" and some perl command inside shell script. export var1='coep -n rst-a2p-hinje.vci.all.com -c' perl -pi -e 's/^/coep -n rst-a2p-hinje.vci.all.com -c /' command.txt currently I am adding value of var1 in command.txt file by... (2 Replies)
Discussion started by: rakeshtomar82
2 Replies

2. Shell Programming and Scripting

Unable to pass shell script variable to awk command in same shell script

I have a shell script (.sh) and I want to pass a parameter value to the awk command but I am getting exception, please assist. diff=$1$2.diff id=$2 new=new_$diff echo "My id is $1" echo "I want to sync for user account $id" ##awk command I am using is as below cat $diff | awk... (2 Replies)
Discussion started by: Ashunayak
2 Replies

3. Shell Programming and Scripting

How to read * in a variable in shell script??

hi, i have a text file which conatins some fields delimited by space. some fields contains * as entries. cron_file.txt 0 * * * * 0 3 * * * i want to read each line 1 by 1 and store each field in seperate variables n a shell script. i am unable to read the field that contains a *. how... (3 Replies)
Discussion started by: Little
3 Replies

4. Shell Programming and Scripting

Use shell variable in perl command line

Hi, I would like to use a shell variable $amp in my perl command line. for fa in $WORKSPACE/*.fa; do amp=`grep ">.*" $fa | sed -e's#>\(.*\)#\1#g'` ampsam="$WORKSPACE/$base/$base.$amp.sam" sqheader=`grep "^@SQ.*SN:$amp.*" $sam` printf "$sqheader\n" >> $ampsam ... (3 Replies)
Discussion started by: jdilts
3 Replies

5. Shell Programming and Scripting

Passing the value of variable which is read from command line in called script

Hi, I am calling a Perl script in my shell script. When Perl script is executed it asks for a answer to be entered by user from terminal. How can i pass that value from my shell script ?? I know I can change perl script to default the answer but i dont have access to do that so only option i... (5 Replies)
Discussion started by: varun22486
5 Replies

6. Shell Programming and Scripting

Passing perl variable to shell command

Can we pass perl variable to shell commands. If yes, please give some example. (2 Replies)
Discussion started by: Anjan1
2 Replies

7. Shell Programming and Scripting

need shell or Perl script to read multiple input

I need shell 0r Perl script to read multiple input and do something and come out example: echo “ enter the host names separated by space “ read servers foreach @servers { do do something done} Here host names like host1 host2 host3 . . . . . . . so on Please help me... (8 Replies)
Discussion started by: sreedhargouda
8 Replies

8. Shell Programming and Scripting

How to read email using mailx in shell script or perl

Hello, I am new to mailx and perl and I need help. I need create a shell script to read the mails on the SUN server, then parse the subject line and message body of each email to extract particular data so that I can pass these data fields in as application parameters to invoke a java... (4 Replies)
Discussion started by: jliharper
4 Replies

9. Shell Programming and Scripting

Shell script to read file into variable

the script i am trying to write will allow my server to give itself an ip address. So far i am up to the following but i'm stuck. tracert -m 1 > traceroute.txt 1 routername (ipaddr) 2.094 ms 1.789 ms 1.243 ms i want to get ipaddr as a variable and use it to write the ifcfg-eth... (7 Replies)
Discussion started by: aspect_p
7 Replies

10. Shell Programming and Scripting

Read variable from file in a C shell script

Hi, I have a 1-line file which looks like " First second third 4 five". I need to extract the number (here 4) in that line and put it in a variable. I will use the variable later to make few tests in my C shell script. Can somebody help me? (2 Replies)
Discussion started by: haouesse
2 Replies
Login or Register to Ask a Question