This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: perl test fails


Gerrit

I've been away for a week, hence the delayed response.

Thanks for this and clearly my scriptlet was broken. I've now tried both alternatives as suggested below. Both work perfectly under Linux. Neither works under NT4.

Linux output:

script is executable

NT4 output:

I damn well am!

To eliminate error further, I'm now running just one copy of the script, since the disk I use on my Linux box is mapped to the i: drive on the NT4 box.

Strange it seems to work correctly for you but not for me.

Regards
Rob


Gerrit P. Haase wrote:
Hallo Rob,

Am Freitag, 15. August 2003 um 11:59 schriebst du:


Not sure if this is the right list for my question.


cygwin 1.3.22-1 running under NT4.


I have a perl script that runs an executable, so before actually running it, the code checks that the file exists and is executable, but the test fails under cygwin. Under linux and OSF1 it's fine.


I cut out the relevant fragments and built a demo. The idea is that if the "if ( -x script )" works correctly, then I should get "script is executable" as output. Otherwise, it will execute the script, in which case the output will be what the script prints.


Hope someone can tell me why -x doesn't work the way I'm expecting.


-----------------------------------------------------------------------
#!/usr/bin/perl
# this is the perl script, called "try"


if ( -x script)

^^^^^^^^^^^^ barewords are obviously a problem here, I'm not sure if this really works under Linux, cannot test it here though.


{
       print "script is executable";
}
else
{
       system("./script");
}
-----------------------------------------------------------------------
# This is the 'executable'.  For the demo, it's just a script with +x
# permissions


echo "I damn well am!"
-----------------------------------------------------------------------
# Here is the output I get


rnc@ramsey ~
$ ./try
I damn well am!


#!/usr/bin/perl
$filename = "script";
if ( -x $filename) {
        print "script is executable";
} else {
        system("./$filename");
}

or

#!/usr/bin/perl
if ( -x "script") {
        print "script is executable";
} else {
        system("./script");
}

are doing the right thing.


Gerrit

-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Opportunities always look bigger going than coming. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Rob Clack Acedb Development, Informatics Group email: rnc@sanger.ac.uk Wellcome Trust Sanger Institute Tel: +44 1223 494780 Wellcome Trust Genome Campus Fax: +44 1223 494919 Hinxton Cambridge CB10 1SA


-- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]