On May 26, 2010, at 9:03 AM, Andros Zuna wrote:
> Hi,
> I did some few changes:
>
> #!
> /usr/bin/perl
>
> # use
> warnings;
> # use
> strict;
>
>
> $command = `ls
> -l`;
>
Looks like you're using backticks. Backticks actually causes perl to execute
the command inside them and return the output. So in this line you are
executing 'ls -l' and assigning the output of that command to $command. You're
them subsequently passing that output into the system() call which is causing
system() to complain.
You should just use regular quotes instead of backticks.
Also, when dealing with external commands like this, it is usually a good idea
to use the full path for everything. So i would alter the line like so:
$command = "/bin/ls -l /full/path/to/directory/we/are/listing/";
>
> if (system($command) == 0)
> {
> }
>
> elsif(system($command) != 0)
> {
> print "Failed to execute:
> $?\n";
> my
> $c++
> }
Couple things here. You don't need an 'elsif'. All you need is 'else'. No point
in executing the command a second time since we already know it doesn't equal
zero if the second block of code is executing.
But I'm not sure why you are using an if statement at all, since you mentioned
earlier you want to continue to execute a command until you get the desired
output. If statements only evaluate a condition once. If you want to check it
more than once, you need a loop. Someone else already posted the answer to this:
while (system($command) != 0) {
}
>
> But I'm still not getting it right, this is my error output:
>
> root@/user$ ./script.pl
> sh: total: command not found
> sh: line 1: -rw-r--r--: command not found
> sh: line 2: -rw-r--r--: command not found
> sh: line 3: -rwxr-xr-x: command not found
> sh: line 4: -rwxr-xr-x: command not found
> sh: line 5: -rwxr-xr-x: command not found
> sh: line 6: -rwxr-xr-x: command not found
> sh: line 7: -rwxr-xr-x: command not found
> sh: line 8: -rwxr-xr-x: command not found
> sh: line 9: -rwxr-xr-x: command not found
> sh: line 10: -rwxr-xr-x: command not found
> sh: total: command not found
> sh: line 1: -rw-r--r--: command not found
> sh: line 2: -rw-r--r--: command not found
> sh: line 3: -rwxr-xr-x: command not found
> sh: line 4: -rwxr-xr-x: command not found
> sh: line 5: -rwxr-xr-x: command not found
> sh: line 6: -rwxr-xr-x: command not found
> sh: line 7: -rwxr-xr-x: command not found
> sh: line 8: -rwxr-xr-x: command not found
> sh: line 9: -rwxr-xr-x: command not found
> sh: line 10: -rwxr-xr-x: command not found
> Failed to execute: 32512
This output is because you are passing a directory listing to a system() call
(because you used backticks earlier).
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/