On Fri, 1 Jul 2005, Lasse wrote: > David Vergin wrote: > > I'm adapting a working linux program to cygwin. The process has been > > relatively painless except for this issue which has delayed me way > > past deadline. > > > > I need to output text and printer codes (which may include \000) from > > a perl program to a printer which may be on a parallel port or a USB > > port. In the past I have done this on linux using something like the > > following. > > > > system(qq/echo -en "$data_str" | lpr -oraw/); > > ...or whatever > > > > That does not work in cygwin. It would work. But on cygwin echo behaves > > differently in a perl system() command from the way it works from the bash > > command line.
To answer the original question: system() uses /bin/sh. On Linux, it's bash. On Cygwin, it isn't -- it's ash. The "echo" builtin of ash doesn't understand the "-ne" switches, so it just echoes them. If you want portable behavior, use '/bin/echo -ne "$data_str"' instead. To answer the other original question, use the "-l" option for Cygwin's "lpr" (instead of "-oraw"). > Why would want use echo for this? Just use a piped open directly to lpr: > > open(FH, '| lpr -oraw'); > print(FH, $data_str); > close(FH); > > (Error handling left as an exercise to the reader...) > > See also: http://www.google.com/search?q=perl+piped+open Almost right: open FH, '| lpr -oraw'; print FH $data_str; close FH; (parens are optional, but the main thing is that there can't be a comma after FH in the print statement). Incidentally, even that's not always needed, since in Cygwin, you should just be able to write to the printer directly (if you know the name, that is). Igor -- http://cs.nyu.edu/~pechtcha/ |\ _,,,---,,_ [EMAIL PROTECTED] ZZZzz /,`.-'`' -. ;-;;,_ [EMAIL PROTECTED] |,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski, Ph.D. '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! "The Sun will pass between the Earth and the Moon tonight for a total Lunar eclipse..." -- WCBS Radio Newsbrief, Oct 27 2004, 12:01 pm EDT -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/