GNU Info

Info Node: (zsh.info)The zsh/mapfile Module

(zsh.info)The zsh/mapfile Module


Next: The zsh/mathfunc Module Prev: The zsh/files Module Up: Zsh Modules
Enter node , (file) or (file)node

The zsh/mapfile Module
======================

The zsh/mapfile module provides one special associative array parameter
of the same name.

mapfile
     This associative array takes as keys the names of files; the
     resulting value is the content of the file.  The value is treated
     identically to any other text coming from a parameter.  The value
     may also be assigned to, in which case the file in question is
     written (whether or not it originally existed); or an element may
     be unset, which will delete the file in question.  For example,
     `vared mapfile[myfile]' works as expected, editing the file
     `myfile'.

     When the array is accessed as a whole, the keys are the names of
     files in the current directory, and the values are empty (to save
     a huge overhead in memory).  Thus ${(k)mapfile} has the same
     affect as the glob operator *(D), since files beginning with a dot
     are not special.  Care must be taken with expressions such as rm
     ${(k)mapfile}, which will delete every file in the current
     directory without the usual `rm *' test.

     The parameter mapfile may be made read-only; in that case, files
     referenced may not be written or deleted.

Limitations
-----------

Although reading and writing of the file in question is efficiently
handled, zsh's internal memory management may be arbitrarily baroque.
Thus it should not automatically be assumed that use of mapfile
represents a gain in efficiency over use of other mechanisms.  Note in
particular that the whole contents of the file will always reside
physically in memory when accessed (possibly multiple times, due to
standard parameter substitution operations).  In particular, this means
handling of sufficiently long files (greater than the machine's swap
space, or than the range of the pointer type) will be incorrect.

No errors are printed or flagged for non-existent, unreadable, or
unwritable files, as the parameter mechanism is too low in the shell
execution hierarchy to make this convenient.

It is unfortunate that the mechanism for loading modules does not yet
allow the user to specify the name of the shell parameter to be given
the special behaviour.


automatically generated by info2www version 1.2.2.9