Perl Unicode Cookbook: Unicode Text in DBM Files (the easy way)

℞ 43: Unicode text in DBM hashes, the easy way

Some Perl libraries require you to jump through hoops to handle Unicode data. Would that everything worked as easily as Perl’s open pragma!

For DBM files, here’s how to implicitly manage the translation; all encoding and decoding is done automatically, just as with streams that have a particular encoding attached to them. The DBM_Filter module allows you to apply filters to keys and values to manipulate their contents before storing or fetching. The module includes a “utf8” filter. Use it like:

    use DB_File;
    use DBM_Filter;

    my $dbobj = tie %dbhash, "DB_File", "pathname";
    $dbobj->Filter_Value_Push("utf8");  # this is the magic bit

 # ST

    # assume $uni_key and $uni_value are abstract Unicode strings
    $dbhash{$uni_key} = $uni_value;

  # FETCH

    # $uni_key holds a normal Perl string (abstract Unicode)
    my $uni_value = $dbhash{$uni_key};

Previous: ℞ 42: Unicode Text in Stubborn Libraries

Series Index: The Standard Preamble

Next: ℞ 44: Demo of Unicode Collation and Printing

Tags

Feedback

Something wrong with this article? Help us out by opening an issue or pull request on GitHub