As seen at http://codepoet.org/lists/uclibc/2004-March/008512.html: Try the following (untested). In .26, the field member was filedes. Current cvs uses __filedes (double underscore prefix). Manuel --- perl-5.8.4.orig/perlio.c 2004-03-22 14:54:03.000000000 -0500 +++ perl-5.8.4/perlio.c 2005-03-09 04:33:49.386767312 -0500 @@ -2824,7 +2824,15 @@ /* XXX this could use PerlIO_canset_fileno() and * PerlIO_set_fileno() support from Configure */ -# if defined(__GLIBC__) +# if defined(__UCLIBC__) + /* uClibc must come before glibc because it defines __GLIBC__ as well. */ +# if defined(__MASK_READING) + f->__filedes = -1; +# else + f->filedes = -1; +# endif + return 1; +# elif defined(__GLIBC__) /* There may be a better way for GLIBC: - libio.h defines a flag to not close() on cleanup */