P5-config-fast

Jul 20, 2023

Extremely fast configuration file parser

This module is designed to provide an extremely lightweight way to parse moderately complex configuration files. As such, it exports a single function - fastconfig - and does not provide any OO access methods. Still, it is fairly full-featured.

Here’s how it works

cf = fastconfig$file, $delim;

Basically, the fastconfig function returns a hash of keys and values based on the directives in your configuration file. By default, directives and values are separated by whitespace in the config file, but this can be easily changed with the delimiter argument see below.

When the configuration file is read, its modification time is first checked and the results cached. On each call to fastconfig, if the config file has been changed, then the file is reread. Otherwise, the cached results are returned automatically. This makes this module great for mod_perl modules and scripts, one of the primary reasons I wrote it. Simply include this at the top of your script or inside of your constructor function

my cf = fastconfig'/path/to/config/file.conf';

If the file argument is omitted, then fastconfig looks for a file named $0.conf in the ../etc directory relative to the executable. For example, if you ran

/usr/local/bin/myapp

Then fastconfig will automatically look for

/usr/local/etc/myapp.conf

This is great if you’re really lazy and always in a hurry, like I am.

If this doesn’t work for you, simply supply a filename manually. Note that filename generation does not work in mod_perl, so you’ll need to supply a filename manually.



Checkout these related ports:
  • Zziplib - Library to provide transparent read access to zipped files
  • Zydis - Fast and lightweight x86/x86-64 disassembler library
  • Zycore-c - Support library with platform independent types, macros, etc for Zydis
  • Zthread - Platform-independent object-oriented C++ threading library
  • Zookeeper - Coordination Service for Distributed Applications
  • Zls - Zig LSP implementation + Zig Language Server
  • Zfp - High throughput library for compressed floating-point arrays
  • Zeal - Offline documentation browser
  • Zapcc - C++ caching compiler based on clang
  • Zanata-platform - Web-based translation platform
  • Zanata-cli - Zanata Java command line client
  • Z88dk - Complete Z80/Z180 development kit
  • Z80ex - ZiLOG Z80 CPU emulator library
  • Z80asm - Assembler for the Z80 microprocessor
  • Z80-asm - Z80 assembly code assembler and disassembler