Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

exec

1 view
Skip to first unread message

Floor

unread,
Jan 28, 2008, 10:39:08 AM1/28/08
to
I would like to run a specific unix in a perl script. Would that be safier
than running it from within a php script?

--
Floor


Jim Gibson

unread,
Jan 28, 2008, 1:29:37 PM1/28/08
to
In article <479df71c$0$85784$e4fe...@news.xs4all.nl>, Floor
<Fl...@yahooh.co.not> wrote:

> I would like to run a specific unix in a perl script. Would that be safier
> than running it from within a php script?

I'm sorry, but I don't understand what you mean by "run a specific unix
in a perl script". Can you explain?

--
Jim Gibson

Posted Via Usenet.com Premium Usenet Newsgroup Services
----------------------------------------------------------
** SPEED ** RETENTION ** COMPLETION ** ANONYMITY **
----------------------------------------------------------
http://www.usenet.com

Floor

unread,
Jan 29, 2008, 7:44:08 AM1/29/08
to
Jim Gibson:

> I'm sorry, but I don't understand what you mean by "run a specific unix
> in a perl script". Can you explain?

Sorry, typo; I mean that I would like to run a unix script in Perl; not a
'who' of 'pwd' command, but a script in which I do several cat's to a
document. Does a Perl source have a certain exec program part? I did the
command, but without any result...

thanks,
--
Floor


Jim Gibson

unread,
Jan 29, 2008, 2:26:11 PM1/29/08
to
In article <479f1f98$0$85792$e4fe...@news.xs4all.nl>, Floor
<Fl...@yahooh.co.not> wrote:

How about posting a short script that demonstrates the problem you are
having?

You can certainly execute a Unix shell script from a Perl program. Use
the system function or backtics (``) or the qx() operator, depending
upon if you wish to capture the standard output of the command you are
running.

See 'perldoc -f system' for details.

I do not understand your question "Does a Perl source have a certain
exec program part?". A Perl program is compiled and interpreted by the
Perl interpreter. The executable part of a Perl program is in memory at
the time of execution.

Perl has the 'exec' function, but I don't think that is what you are
asking about.

Floor

unread,
Feb 3, 2008, 4:43:11 AM2/3/08
to
Jim:

> How about posting a short script that demonstrates the problem you are
> having?

Sorry that I haven't been able to respond earlier, but this is how it goes:
I have this mailinglist script (Minimalist) that I converted into a GUI
manageable interface (nowadays an internet nono doesn't understand the
command structure of a mailinglist anymore :-)
With a 'cat' command I read out the contents of the e-mail adresses of the
subscribers and put it in one viewable textfile.
I now run that job in a crontab job that runs every 15 minutes.
It would be great if I can run that job at the start of the Perl script of
the mailinglist software. I allready tried to put the system line in it, but
as I am a complete nono on Perl, it didn't run (it did, but didn't make an
update to the online output file).

> You can certainly execute a Unix shell script from a Perl program. Use
> the system function or backtics (``) or the qx() operator, depending
> upon if you wish to capture the standard output of the command you are
> running.

I think there might be allway a security issue on this, but in this case it
will be the only alternative I am afraid.

> See 'perldoc -f system' for details.

Will do so, thanks

> I do not understand your question "Does a Perl source have a certain
> exec program part?". A Perl program is compiled and interpreted by the
> Perl interpreter. The executable part of a Perl program is in memory at
> the time of execution.

I am not an experienced Perl users, but as with Cobol, you have to put these
kins of commands in a certain part of the source code or else the command
wouldn't be executed.

just thinkin,

--
Floor


Joe Smith

unread,
Feb 5, 2008, 3:34:12 AM2/5/08
to
Floor wrote:

> With a 'cat' command I read out the contents of the e-mail adresses of the
> subscribers and put it in one viewable textfile.
> I now run that job in a crontab job that runs every 15 minutes.
> It would be great if I can run that job at the start of the Perl script of
> the mailinglist software. I allready tried to put the system line in it, but
> as I am a complete nono on Perl,

I don't know "nono"; I assume you mean "am a complete newbie when it comes to Perl".
That's OK, we all were at one time.

> it didn't run (it did, but didn't make an update to the online output file).

Did your other script check for errors? (In particular: "permission denied".)

I hope you're aware that when the web server runs your CGI script, it runs
as "nobody" (or some other unprivileged user-ID) and not as "floor".
That is, if the output file has the usual file permissions, so that it can
only be written to by a process logged in as you, then the file cannot
be written to by the CGI script when run by the web server.

>> You can certainly execute a Unix shell script from a Perl program. Use
>> the system function or backtics (``) or the qx() operator, depending
>> upon if you wish to capture the standard output of the command you are
>> running.
>
> I think there might be allway a security issue on this, but in this case it
> will be the only alternative I am afraid.

Using
system "./my-script" == 0 or warn "Problem running ./my-script: $? ($!)";
or
my $results = `./my-script`; warn "Problem running ./my-script: $? ($!)" if $?;
has some of the same sort of security issues as
open my $fh,'>',$filename or warn "Cannot write to $filename: $!";
in regards to: Output files need to be writable by the web server process.

> I am not an experienced Perl users, but as with Cobol, you have to put these
> kins of commands in a certain part of the source code or else the command
> wouldn't be executed.

Perl does not have those sorts of silly restrictions. Any executable statement
that is not inside a subroutine definition is considered to be part of the
main program. It will be executed if the flow of control reaches that far.

On another topic, I recommend you look into the comp.lang.perl.misc newsgroup;
it has a lot more traffic than the alt.perl newsgroup.
-Joe

0 new messages