Perl System command calls to variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl System command calls to variable
# 1  
Old 11-10-2008
Perl System command calls to variable

I am new to scripting in Perl so I have a dumb question.
I know I can call system commands using

system("date");

But I am not able to:
1. set its output to a variable
2. run in quiet mode(no output to the screen)

The examples i have

Code:
#!/usr/bin/perl
print `date +\%y\%m\%d.\%H\%M`;   # OK
x=`date +\%y\%m\%d.\%H\%M`;     #ERROR
print x;

I get something like
Can't modify constant item in scalar assignment
# 2  
Old 11-10-2008
Well, you should specify that you want to print scalar, you're missing the " $ ", the following example works OK :

Code:
#!/usr/bin/perl

print `date +\%y\%m\%d.\%H\%M`;
print "\nthis is separator print statement\n";

$x = `date +\%y\%m\%d.\%H\%M`;
print "$x\n";
print "\nthis is the second separator print statement\n\n";

If you want to capture system command's output, you should not use system(), as it only returns the status of wait(). Use backticks instead as shown above.
# 3  
Old 11-10-2008
To capture output:

Code:
$output = `program args`;   # collect output into one multiline string
@output = `program args`;   # collect output into array, one line per element

But since you just want a date, it would be more efficient to have Perl do it than to fork off a new process.

Code:
$ cat ./date_test.pl
#!/usr/bin/perl

use strict;
use warnings;
use POSIX qw(strftime);

my $x;

$x = strftime("%y%m%d.%H%M", localtime());

print "x = $x\n";

exit 0;

$ ./date_test.pl
x = 081110.1019

# 4  
Old 11-10-2008
works

thanks it worked.
Now i have little problem with output.
I performa backup but tar always give me a output:
"tar: Removing leading `/' from member names"
I tried using &>/dev/null || exit 0 but no help...

Code:
sub backup()
{
    #Backup a folder and move it
    my @f = (localtime)[3..5]; # grabs day/month/year values
    my $datex = $f[1] +1 ."-". $f[0]; 
    my $filename = "bkp-scripts_".$datex.".tgz";
    #print "$filename\n";
    #  &> /dev/null" redirects both stdout and stderr to /dev/null. Dosent work!
    `tar zcf "/home/backup/$filename" /scripts &>/dev/null || exit 0`;
}

# 5  
Old 11-10-2008
Try it this way:
Code:
`tar zcf "/home/backup/$filename" /scripts 2>/dev/null || exit 0`;

# 6  
Old 11-10-2008
yes! thanks so much
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. HP-UX

Command to trace System Calls on HP UX

All, Kindly let me know command which is used to trace the system calls on HP - UX server when an executable is run. On Solaris we have TRUSS which does the need. On HP UX we have TUSC command which is a third party software. Currently this is not installed on my HP Server. If there... (3 Replies)
Discussion started by: helper
3 Replies

2. UNIX for Dummies Questions & Answers

system calls in C

Hello, how would i be able to call ps in C programming? thanks, ---------- Post updated at 01:39 AM ---------- Previous update was at 01:31 AM ---------- here's the complete system call, ps -o pid -p %d, getpit() (2 Replies)
Discussion started by: l flipboi l
2 Replies

3. UNIX for Dummies Questions & Answers

About system calls.

Hi all, I am new here . I want to know about system call in detail. As system calls are also function .How system identifies it.:) (2 Replies)
Discussion started by: vishwasrao
2 Replies

4. BSD

system calls

what is the functions and relationship between fork,exec,wait system calls as i am a beginer just want the fundamentals. (1 Reply)
Discussion started by: sangramdas
1 Replies

5. Programming

System calls

why user is not able to switch from user to kernel mode by writing the function whose code is identical to system call. (1 Reply)
Discussion started by: joshighanshyam
1 Replies

6. UNIX Desktop Questions & Answers

Using system calls

Hi, I'm new to UNIX system calls. Can someone share your knowledge as to how exactly system calls should be executed? Can they be typed like commands such as mkdir on the terminal itself? Also, are there any websites which will show me an example of the output to expect when a system call like... (1 Reply)
Discussion started by: ilavenil
1 Replies

7. Solaris

System calls ?

where can i find the differences in System calls between solaris and aix? also is it possible to find a comprehensive list of them? (1 Reply)
Discussion started by: TECHRAMESH
1 Replies

8. UNIX for Dummies Questions & Answers

System calls?

open, creat, read, write, lseek and close Are they all primitive? :confused: *Another Question: is there a different between a system call, and an i/o system call? (2 Replies)
Discussion started by: PlunderBunny
2 Replies

9. UNIX for Dummies Questions & Answers

System calls for cp and mv

Which system calls are made for operations cp and mv (2 Replies)
Discussion started by: gaurava99
2 Replies

10. UNIX for Dummies Questions & Answers

System Calls

What does the system call "dup" do? What is the difference between dup and dup2 I have a fair idea of what it does but I am confused when its coming down to the exact details... Please help me!:confused: (2 Replies)
Discussion started by: clickonline1
2 Replies
Login or Register to Ask a Question