On May 26, bingfeng zhao said:
On RedHat Linux, the perl complain "Inappropriate ioctl for device" when I
use the following code to open a file:
my $file = "./abc";
if ( open FN, $file )
{
print "Cannot open the file: $!\n";
next;
}
Um, you're printing that message if the file DOES open! You want 'unless'
instead of 'if', or else a 'not' operator in there:
if (not open FN, $file) { ... }
or
unless (open FN, $file) { ... }
The value in $! is unreliable if it hasn't actually been set (as is the
case in your code).
I modified code and test the FH as following, perl indicate "Bareword "FH"
not allowed while "strict subs"".
<CODE>
open FH, $name;
if ( not defined FH )
You'd need to do *FH instead of FH, but that's really not the right way to
go about doing this. If you wanted to do it based on the filehandle, you
could do:
if (not defined fileno(FH)) { ... }
But why not just write:
open(FH, $file) or do {
warn("can't read $file: $!");
next;
};
That's nicer on the eyes, I think.
BTW, why a DOS-style perl file cannot run on linux and the bash report ":
bad interpreter: No such file or directory"? It will be OK if I save the
file as Unix-style and FTP to linux.
This is because if you transfer it incorrectly, the first line (the #!
line) is actually '#!/usr/bin/perl\r\n' instead of '#!/usr/bin/perl\n'
which means that Unix is looking for the program '/usr/bin/perl\r', and
that file doesn't exist.
Another question is what is the simplest way to replace "\r\n" with "\r" or
"\n"?
I think you'd just want to remove the \r's. This is how you remove \r's
from a string in Perl:
$string =~ tr/\r//d;
Or, on Unix, use the dos2unix utility -- you might already have it.
--
Jeff "japhy" Pinyan % How can we ever be the sold short or
RPI Acacia Brother #734 % the cheated, we who for every service
http://japhy.perlmonk.org/ % have long ago been overpaid?
http://www.perlmonks.org/ % -- Meister Eckhart
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>