PerlIO *PerlIO_stdin(void);
    PerlIO *PerlIO_stdout(void);
    PerlIO *PerlIO_stderr(void);
    
    PerlIO *PerlIO_open(const char *,const char *);
    int     PerlIO_close(PerlIO *);
    int     PerlIO_stdoutf(const char *,...)
    int     PerlIO_puts(PerlIO *,const char *);
    int     PerlIO_putc(PerlIO *,int);
    int     PerlIO_write(PerlIO *,const void *,size_t); 
    int     PerlIO_printf(PerlIO *, const char *,...);
    int     PerlIO_vprintf(PerlIO *, const char *, va_list); 
    int     PerlIO_flush(PerlIO *);
    int     PerlIO_eof(PerlIO *);
    int     PerlIO_error(PerlIO *);
    void    PerlIO_clearerr(PerlIO *);
    int     PerlIO_getc(PerlIO *);
    int     PerlIO_ungetc(PerlIO *,int);
    int     PerlIO_read(PerlIO *,void *,size_t); 
    int     PerlIO_fileno(PerlIO *);
    PerlIO *PerlIO_fdopen(int, const char *);
    PerlIO *PerlIO_importFILE(FILE *);
    FILE   *PerlIO_exportFILE(PerlIO *);
    FILE   *PerlIO_findFILE(PerlIO *);
    void    PerlIO_releaseFILE(PerlIO *,FILE *);
void PerlIO_setlinebuf(PerlIO *);
    long    PerlIO_tell(PerlIO *);
    int     PerlIO_seek(PerlIO *,off_t,int);
    int     PerlIO_getpos(PerlIO *,Fpos_t *) 
    int     PerlIO_setpos(PerlIO *,Fpos_t *) 
    void    PerlIO_rewind(PerlIO *);
     
    int     PerlIO_has_base(PerlIO *); 
    int     PerlIO_has_cntptr(PerlIO *); 
    int     PerlIO_fast_gets(PerlIO *); 
    int     PerlIO_canset_cnt(PerlIO *); 
    char   *PerlIO_get_ptr(PerlIO *); 
    int     PerlIO_get_cnt(PerlIO *); 
    void    PerlIO_set_cnt(PerlIO *,int); 
    void    PerlIO_set_ptrcnt(PerlIO *,char *,int); 
    char   *PerlIO_get_base(PerlIO *); 
    int     PerlIO_get_bufsiz(PerlIO *); 
#define them to the 
I/O mechanism selected at Configure time.
The functions are modeled on those in stdio.h, but parameter order has been ``tidied up a little''.
stdin, stdout, stderr. They are written to look like ``function calls'' rather than variables
because this makes it easier to make them function calls if platform cannot export data to loaded modules, or if
(say) different ``threads'' might have different values.
fopen/fdopen arguments are the same.
fprintf/vfprintf equivalents.
printf equivalent. printf is #defined to this
function, so it is (currently) legal to use printf in perl sources.
fread and fwrite. Note that
arguments are different, there is only one ``count'' and order has ``file''
first.
fputs and fputc. Note that
arguments have been revised to have ``file'' first.
ungetc. Note that arguments have been
revised to have ``file'' first.
getc.
feof.
ferror.
fileno, note that on some platforms, the meaning of ``fileno'' may not match 
UNIX.
clearerr, i.e., clears 'eof' and 'error'
flags for the ``stream''.
fflush.
ftell.
fseek.
fgetpos and fsetpos. If
platform does not have the stdio calls then they are implemented in terms
of PerlIO_tell and PerlIO_seek.
rewind. Note may be redefined in terms of
PerlIO_seek at some point.
tmpfile, i.e., returns an anonymous PerlIO
which will automatically be deleted when closed.
The fact that such a FILE * has been 'exported' is recorded, and may affect future PerlIO operations on the original PerlIO *.
setlinebuf. Use is deprecated pending
further discussion. (Perl core uses it only when ``dumping'' is has nothing to do with $| auto-flush.)
  PerlIO_fast_gets(f) = PerlIO_has_cntptr(f) && \ 
                        PerlIO_canset_cnt(f) && \
                        `Can set pointer into buffer'
PerlIO_get_ptr and PerlIO_get_cnt.