PCONVERT(1)    User Contributed Perl Documentation    PCONVERT(1)

NAME
      pconvert - convert file formats

SYNOPSIS
      pconvert [-check] [-debug] [-gzip] [-option
      program=options] [-nono] [-out filename] [-overwrite]
      [-newer] [-remove] [-to type] [-verbose] [name ...]

DESCRIPTION
      Pconvert determines the type of the files named on the
      command line and tries to convert them to a specified type
      (defaults to PostScript). It uses internal rules to find a
      set of commands which can do the task.

      The file type is determined by file extensions. If the
      extension in not known or the -check option is given, the
      first bytes of the file are examined to infer a type.
      Files with extensions .gz or .Z are assumed to be
      compressed by gzip(1) or compress(1) respectively and
      handled transparently.

OPTIONS
      All options may be abbreviated.Boolean options (all
      options without arguments) may be negated by prefixing
      them with no. For example use -nocheck to enable file
      extension checking if your sysadmin had set the default to
      -check. See the Getopts::Long manpage for details.

      -check    Do not trust file extensions when determining
                the input file type.

      -debug    Enables some debug output. Not very useful.

      -gzip     Compress output with gzip.

      -option program=options
                Pass options to the filter program program if
                used. This option may be repeated any number of
                times. The option parsing checks if program is a
                known filter. To learn about the valid filters,
                run pconvert without arguments.

      -nono     Do nothing. Just print what would have been done
                without -nono.

      -out filename
                Pconvert normally writes the output to a new
                file with the same base name as the input file
                and the type appended as extension. This can be
                overwritten with the -out option. If filename is
                '-', pconvert writes to STDOUT.

      -overwrite, -newer
                Pconvert does not overwrite existing files

11/Apr/96                     perl                              1

                unless -overwrite or -newer is given. -overwrite
                forces overwriting. -newer will overwrite only
                if source is newer.

      -remove   If -remove is set, the original file is removed.

      -to type  Use type as desired output type. You can get a
                list of valid output types when running pconvert
                without any arguments.

      -verbose  Print commands before running them.

EXAMPLES
      Here are some examples. Do not be worried about the
      absolute paths in the produced commands. Pconvert will
      search for the filters on your system. It may find another
      pipe, if some of the filters are missing on your system.

      Converting image formats

        % pconvert -nono -to tiff ~www/pages/icons/LS6.gif
        chdir /home/robots/www/pages/icons/
        /bin/cat LS6.gif|
          /usr/local/image-tools/bin/giftopnm|
          /usr/local/image-tools/bin/pnmtotiff>LS6.tiff

      If giftopnm is missing, the following plan is generated:

        % pconvert -nono -to tiff ~www/pages/icons/LS6.gif
        chdir /home/robots/www/pages/icons/
        /bin/cat LS6.gif|
          /usr/local/image-tools/bin/cjpeg|
          /usr/local/image-tools/bin/djpeg -pnm|
          /usr/local/image-tools/bin/pnmtotiff>LS6.tiff

      Generating images from postscript

        % pconvert -nono -to gif pconvert.pod
        /bin/cat pconvert.pod|
          (/bin/cat > pconvert.$$;/usr/local/ls6/perl/bin/pod2man \
                 pconvert.$$;/bin/rm pconvert.$$)|
          /usr/local/groff-1.09/bin/groff -mandoc|
          /usr/local/X11R5/bin/gs -q -sDEVICE=pbmraw -sOutputFile=- -|
          /usr/local/image-tools/bin/ppmquant 256|
          /usr/local/image-tools/bin/ppmtogif>pconvert.gif

      Generating postscript manpages

11/Apr/96                     perl                              2

        % pconvert -nono pconvert.pod
        /bin/cat pconvert.pod|
          (/bin/cat > pconvert.$$;/usr/local/ls6/perl/bin/pod2man \
                 pconvert.$$;/bin/rm pconvert.$$)|
          /usr/local/groff-1.09/bin/groff -mandoc>pconvert.ps

      Building a tar archive from a directory

        % pconvert -nono -to TAR -gzip image
        /bin/find image -depth  -xdev -type f -print|
          /usr/local/ls6/unsupported/bin/sun4-sunos/gcpio -Htar -o|
          /usr/local/bin/gzip -c>image.tar.gz

      Building a tar archive from a MANIFEST file

        % pconvert -nono -to TAR -gzip image/MANIFEST
        /bin/cat image/MANIFEST|
          /bin/awk '{printf "image/%s\n", $1}'|
          /usr/local/ls6/unsupported/bin/sun4-sunos/gcpio -Htar -o|
          /usr/local/bin/gzip -c>image.tar.gz

ENVIRONMENT
      PATH is used in addition to build-in paths to search for
      programs.

SEE ALSO
      Getopts::Long(3), awk(1), cjpeg(1), compress(1), djpeg(1),
      gcpio(1), giftopnm(1), gzip(1), pbmtopgm(1), perl(1),
      pgmtopbm(1), pnmtops(1), pnmtotiff(1), ppmquant(1),
      ppmtogif(1), tar(1), tifftopnm(1).

EXTENSION
      Extension should be pretty easy. Help safe the world:

           Please mail your extension to the author.

      New types

      To add a new type, just append an entry to the %TYPE hash.
      Each entry should be a reference to an array containing:

           o the name of the type,

           o a regular expression which matches the extension,
           and

           o optionally a regular expression which matches the
           start of the file.

      Here is the definition of the GIF type:

11/Apr/96                     perl                              3

          GIF  => ['\.gif',   '^GIF8[79]a'],

      Add a conversion rule.

      To add a new filter, just append a an array reference to
      @RULE. The array should contain the from and to type an
      the name of the filter program. Here are some examples:

           [GIF             => PPM,  'giftopnm'],
           [[PPM, PGM, PBM] => GIF,  ['ppmquant 256', 'ppmtogif']],
           [POD             => MAN,
                        '(cat > %O.$$; pod2man %O.$$; rm %O.$$;)'],

      The %O is replaced by the target name (i.e. the name of
      the output file).

AUTHOR
      Ulrich Pfeifer <[email protected]>

11/Apr/96                     perl                              4