in reply to help on system function

I've never heard of "plod"... what is it?

In general, shell builtin commands are only meaningful in the context of an interactive shell, so trying to use them from within a perl script usually won't make sense. Note that each "system()" call in perl invokes a new, distinct shell process that executes whatever command is passed in the call, so there is no shell command history in that context -- in other words, even if the "history" builtin works from within the system call, it will just return an empty result.

Maybe if you provide a snippet of your code, and/or some more detail about what you're trying to accomplish, someone here can suggest a simple way to do what you want.

As a wild guess at that, I wonder if maybe your current perl script is executing a bunch of system calls, and you want to log the all of them; why not just open a log file at the start of the script, and each time you make a system call, print a line to that log?

Replies are listed 'Best First'.
Re: Re: help on system function
by Anonymous Monk on Jan 05, 2003 at 19:02 UTC
    sorry my earlier post was not clear enough.plod is "personal logging device " as the author calls it -a perl script to log your work from the command line.It has one-letter commands prefixed by a '~'.quite useful if you like working from the command line ( like I do).You use the "~>" command to run an external command and send the output to the log. I wanted to save some complicated command line to the log . I tried to get them off the history command and it did not work. The plod script uses perl system function ...
      If the author of "plod" might object to having his/her code posted here, that's understandable. If you're able to alter your copy of "plod", you might consider adding the functionality that you want -- it would be pretty simple (if the code is already reasonably well written).

      If "plod" has a file handle for the log file, and can use the "print" command on that handle, you just need to add a new single-character "plod" command to print the current command line string to the log file (and then pass it to the system call as well).

      For that matter, if "plod" does not provide its own "history" functionality, I'm surprised that you find it useful, and I'd expect that this is the next bit of functionality you'd want to add -- an array where you push each shell command as you execute it, and (this is the slightly heavy part) some tilde command keys to list the array, search for strings in it, save it to a file, etc.

        google came up with this plod
        poj
      You'll really need to show us the 'plod' code before we can help figure out what is going on here.

      I just had a thought. Is there any reason why you need to use plod in the first place? Unix already allows you to be lazy if you don't want to do a lot of typing on the command line. Why not create an shell alias? For example I often use the command ls -lt | more. That's far too much typing for me so I've got an alias. Here's a snip from my .bash_profile:
      alias l='ls -lt | more'
      You could also create an alias for the commands you are attempting:
      alias foo='somecommand -pdjoh >> /path-to/your-output-file'
      Just a thought...

      -- vek --