The third solution isn't as portable, though.
cat is probably available on more platforms than
perl is. Of course, Windows rules the world, and both
cat and
perl are ported to Windows -- and, AFAIK, neither comes standard with the OS. Unlike
cat,
perl is
not included in the POSIX standard for shell utilities.
Why do you think redefining $/ as I did is a potential problem?
Well, you consider someone modifying the code to be a potential problem. Would if someone modifies your code, and adds a return after the first assignment to $/, but before the second? Would if someone wraps the code in an eval, and the read triggers an exception?