New line characters - beware!
Posted by admin (Graham Ellis), 11 November 2002Newcomers to Perl - beware! When you read in a line in using $input = <STDIN>;, what you read includes a new line sequence. If you then use the variable $input to be a file name, it's a very curious file name with the new line sequence on the end of it!
Easy options - use either the chomp function or the chop function to remove the new line sequence; better option if you're trying to "bullet proof" your code - match it against a regular expression to ensure that the file name given isn't an attempted hack
Posted by admin (Graham Ellis), 3 January 2003From my mailbag: ....
"Can you help me with this problem. I need to perform some actions on a dos textfile on a unix platform. I want to chomp the cr/lf. When I do that the function works not correct anymore."
Err - technically it does work correctly - it removes the Unix end of line character (which is just a new line) leaving the carriage return that dos also uses on the end of the string.
I would suggest you replace your chomp with
$line =~ s/\s+$//;
which will strip off all trailing white spaces - tabs, spaces, new lines and returns as well. This makes your code work on Unix and Linux whether the input file is from Windows or from Unix. As a side effect, it also removes any trailing whitespace on each line which is usually but not always an advantage.
Comment by LaV (published 2011-02-18)
Solved my problem.
Comment by Anon (published 2010-08-21)
Thanks - the regexp did the trick for me! [#3737]
Comment by Anon (published 2010-07-15)
some files i was working with had the new line return, other did not. this worked for both, thanks. [#3654]
Comment by Anon (published 2010-03-21) Suggested link.
Thanks for that tiny regexp. [#3486]
You can Add a comment or ranking or edit your own comments
There are presently 1 new comment(s) pending publication on this page
Average page ranking - 4.8
PH: 01144 1225 708225 • FAX: 01144 1225 793803 • EMAIL: email@example.com • WEB: http://www.wellho.net • SKYPE: wellho