--
Floor
> 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
> 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
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.
> 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
> 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