Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Perl program does not seem to be understood by Fedora 21

by Paladin (Vicar)
on Apr 29, 2015 at 21:57 UTC ( [id://1125170]=note: print w/replies, xml ) Need Help??


in reply to Perl program does not seem to be understood by Fedora 21

My guess is an non-printing character (like ^M) at the end of the #! line. Try deleting that entire line and re-typing it in and see if that fixes the issue. Alternatively, the file may be using DOS line endings instead of *nix line endings, in which case try running it through dos2unix to convert the line endings. (This is really the same issue as above, but will fix all the other line endings as well).
  • Comment on Re: Perl program does not seem to be understood by Fedora 21

Replies are listed 'Best First'.
Re^2: Perl program does not seem to be understood by Fedora 21
by Laurent_R (Canon) on Apr 29, 2015 at 22:44 UTC
    Hmm, my first reaction was that it seems to me that Perl is able to deal with DOS end-of-lines (^M) under *nix without any problem within the script itself (and I think the other way around too). Not that I have ascertained it by making a decisive test on it, but after having developed programs under Windows and run them under Unix for so many years, it is almost doubtless that I would have encountered the problem if Perl wasn't able to deal with that, and I am almost sure I have never met it.

    Having said that, other non-printing characters is definitely a possibility, I ran into this type of problem just a couple of days ago under VMS: for some reason, my Windows editor added some presumably utf-8 character at the very beginning of my program, which refused to even compile.

    And, thinking back to my initial reaction in my first sentence above, it is absolutely true that if the shebang line is faulty, well, it is not interpreted by Perl but by the shell. And the shell is not as clever as Perl. But then, maybe I should have met the problem with DOS formated Perl script? Well, probably not, because I actually almost never really use the shebang line, my Unix shell scripts running Perl programs almost always launch the Perl program with a command such as perl my_script.pl (this way I don't run into RWE problems if I forgot to change privileges). And the same when I run a Perl program directly from the shell prompt. So that, in the end, your hypothesis might very well be right.

    Well, all this to say that I initially thought you were probably wrong, and that, after a second thought, I think you might be right.

    Je suis Charlie.
      Perl can handle the DOS line endings just fine, but as you said, it's the shell that can't (it tries to find a program named /usr/bin/perl^M to pass the script to). The cases you had where you didn't have issues with DOS line endings could have been that your #! line was something like: #!/usr/bin/perl -w^M, in which case the shell can find /usr/bin/perl and passes it the command line argument -w^M along with the script name, and perl can process those fine.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1125170]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (2)
As of 2024-04-26 02:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found