Do note the use of chomp. It's much better than those regexps of yours.
Well, no. The OP did mention that the input data comes from a variety of OS's (though he didn't say which OS(s) his script is supposed to run on). Chomp will remove anything at the end of a record that matches "$/", whose default value is OS-dependent, which means that a when a script runs on any sort of unix, chomp will leave a "\r" untouched when the input happens to come directly from a CRLF source.
I would just recommend simplifying the OP's regex:
Also, I'd recommend a while loop instead of foreach my $line ( <DATA> ), because the for loop causes the entire file to be slurped into a list before the first iteration begins. For small files, that's not a problem, but why invite this sort of trouble if the files happen to get really big?s/[\r\n]*$//;
In reply to Re^2: Generating Hashes from arrays of arbitrary size
by graff
in thread Generating Hashes from arrays of arbitrary size
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |