Solved

Backticks and while

Posted on 2008-10-29
4
253 Views
Last Modified: 2008-10-29
I am fairly new to perl and would like to know if the following would be ok, or if there was  a better way to do this. I tried open but $! gives me "No such file or directory" when the command works fine with either system or back ticks. also should I flush the data?
while(`$cmd`) {

print ".";

sleep(5);

}

Open in new window

0
Comment
Question by:lrudor
  • 2
  • 2
4 Comments
 
LVL 48

Expert Comment

by:Tintin
Comment Utility
It's always best to describe what you are actually trying to do.

Perhaps, you want something like
open CMD, "/some/command|" or die "Can not run command $!\n";
 

while (<CMD>) {

  print;

  sleep(5);

}

Open in new window

0
 

Author Comment

by:lrudor
Comment Utility
Tintin, thanks for your response.

here is the command that gets run:

"C:\video tools\mencoder\mencoder.exe" -sid 0 -vid 0 -nosound -o ./vid.264 -of rawvideo -ovc x264 -x264encopts bitrate=900:threads=auto:pass=1 -vf scale=704:400 -passlogfile ./pass.log -subfont-text-scale 3 "F:\videos\test.mkv"

so below returns:

"Unable to run the command. No such file or directory at"...

while system or backticks will run the command just fine.


my $cmd = '"C:\video tools\mencoder\mencoder.exe" -sid 0 -vid 0 -nosound -o ./vid.264 -of rawvideo -ovc x264 -x264encopts bitrate=900:threads=auto:pass=1 -vf scale=704:400 -passlogfile ./pass.log -subfont-text-scale 3 "F:\videos\test.mkv"';
 

print $cmd;

open CMD, $cmd or die "Unable to run the command. $!";

while (<CMD>) {

  print '.';

  sleep(5);

}

Open in new window

0
 
LVL 48

Accepted Solution

by:
Tintin earned 100 total points
Comment Utility
You left out the most important part, the | symbol at the end of the command.  Appended to the command it means pipe the output, prepended means pipe to the input.

Again, I'll ask you to describe what you are trying to achieve.

Looking at your code, I suspect what you *really* want to do is output dots while you are encoding videos?  Correct?  If so, then I would suggest a completely different approach.
my $cmd = '"C:\video tools\mencoder\mencoder.exe" -sid 0 -vid 0 -nosound -o ./vid.264 -of rawvideo -ovc x264 -x264encopts bitrate=900:threads=auto:pass=1 -vf scale=704:400 -passlogfile ./pass.log -subfont-text-scale 3 "F:\videos\test.mkv"';

 
 

open CMD, "$cmd|" or die "Unable to run the command. $!";

while (<CMD>) {

  print '.';

  sleep(5);

}

Open in new window

0
 

Author Comment

by:lrudor
Comment Utility
Sorry for being so vague in my description, but yes that's what I am trying to achieve, and how would you going about doing it? I was just trying to create something simple, its really the first time I have done anything in perl.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

There are many situations when we need to display the data in sorted order. For example: Student details by name or by rank or by total marks etc. If you are working on data driven based projects then you will use sorting techniques very frequently.…
Checking the Alert Log in AWS RDS Oracle can be a pain through their user interface.  I made a script to download the Alert Log, look for errors, and email me the trace files.  In this article I'll describe what I did and share my script.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now