Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^2: how to use perl variable in system command to run on unix

by tousifp (Novice)
on Sep 03, 2013 at 16:47 UTC ( #1052143=note: print w/ replies, xml ) Need Help??


in reply to Re: how to use perl variable in system command to run on unix
in thread how to use perl variable in system command to run on unix

Thanks Chromatic. I changed this line as said : my $files=system(qq(cd /waslogs1/vfoneLog/cposapp && ls -lrt | grep -i "$grep_date" | awk '{ print \$9 }' > /home/cpos/CRM_Reports/timelogic/filelist.txt)); Its working now. But can you explain me what was the problem with previous line.

And what if I use :
my $cmd=q(cd /waslogs1/vfoneLog/cposapp && ls -lrt | grep -i "$grep_da +te" | awk '{ print $9 }' > /home/cpos/CRM_Reports/timelogic/filelist. +txt); my $files=system($cmd);

This is still not working


Comment on Re^2: how to use perl variable in system command to run on unix
Select or Download Code
Re^3: how to use perl variable in system command to run on unix
by Arunbear (Parson) on Sep 03, 2013 at 16:58 UTC
    q does not expand variables, for that you need qq e.g.
    % perl -E '$x = "hello"; say q($x)' $x % perl -E '$x = "hello"; say qq($x)' hello

      Thank you very much. But why $9 is escaped? Me new to perl !!!

        Because $9 is a variable in Perl, the ninth capture in a regular expression. Since you don't have a regex before, it is an undefined variable in your case, so il will be omitted altogether from your command line. If you escape the $ sign, you say that you want a $ sign, not a variable called $9. Then it is not interpolated and passed to awk correctly.

        Because in this case you want a literal "$9", you don't want it to be expanded by Perl. An example that you can experiment with:
        % date Wed Sep 4 10:41:55 BST 2013 % date | awk '{ print $2 }' Sep % perl -de0 Loading DB routines from perl5db.pl version 1.32 Editor support available. Enter h or `h h' for help, or `man perldebug' for more help. main::(-e:1): 0 DB<1> $cmd = qq[date | awk '{ print $2 }'] DB<2> p $cmd date | awk '{ print }' DB<3> p qx/$cmd/ Wed Sep 4 10:47:41 BST 2013 DB<4> $cmd = qq[date | awk '{ print \$2 }'] DB<5> p $cmd date | awk '{ print $2 }' DB<6> p qx/$cmd/ Sep DB<7> q %

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1052143]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (10)
As of 2014-09-17 10:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (72 votes), past polls