Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: I want to call a special xterm to execute "ls" command in a perl script

by derby (Abbot)
on Aug 21, 2013 at 14:58 UTC ( [id://1050364]=note: print w/replies, xml ) Need Help??


in reply to I want to call a special xterm to execute "ls" command in a perl script

Why the heck do you want to go to all that bother. Why not use opendir, readdir, etc. Or just system with ls. There's no need to bring xterm into the mix.

-derby

Replies are listed 'Best First'.
Re^2: I want to call a special xterm to execute "ls" command in a perl script
by sincerchan (Initiate) on Aug 22, 2013 at 04:58 UTC
    Hi derby, I'm the one you replied. the "ls" is only a simple exaple. the real case is that I want to open a special xterm with "TBTerm" cmd, and in this special xterm have a special cmd named "vst".. so the full and simplified thing I want to do is: in a perl script,firt open a new another xterm, and execute a command in the new xterm, and return the result of this cmd to script.

      Perl cannot normally control other applications' terminals, so you'll have your application to fork, then run the child process under xterm, then use Expect module to pass the "vst" command to the "TBTerm" program. Read perlop about quoting operators if you don't know how to quote your command properly.

      Use something like this to run your application under xterm:

      unless (-t STDIN) { # check whether STDIN is a terminal exec (qw/xterm -e/,$0); # assuming that your perl file is executab +le }
      Do you really need to spawn another xterm? If not, you can simplify your application and avoid coping with returning text data from forked child process (read pipe, by the way), since Expect creates a virtual terminal (not visible as a graphical window, though) to run your application into.

        yes,I really want to spawn a xterm, because the TBterm cmd will pop up a xterm window with special setting.

        I think there are two things hard to realize:

        the first: how to open a process of "TBterm" backgroundly, because if it pop up window explicitly, it can't run the "vst" automaticly by script.

        the sencond: how to run the "vst" cmd in the background process "TBterm".(you can recognize "vst" as common cmd,like "ls")

        I have try follow module: use Proc::Daemon, Proc::Background; Expect, but all failed. now I don't know if my demand can be realized by pipe.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2024-03-29 07:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found