Perl Cd Bookshelf [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Perl Cd Bookshelf [Electronic resources] - نسخه متنی

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید

14.2. Emptying a DBM File


14.2.1. Problem



You want to
clear out a DBM file.

14.2.2. Solution


Open the database and assign ( ) to it. Use
tie:

use DB_File;
tie(%HASH, "DB_File", $FILENAME)
or die "Can't open FILENAME: $!\n";
%HASH = ( );
untie %HASH;

Alternatively, delete the file and reopen:

unlink $FILENAME
or die "Couldn't unlink $FILENAME to empty the database: $!\n";
tie(%HASH => "DB_File", $FILENAME)
or die "Couldn't create $FILENAME database: $!\n";

14.2.3. Discussion


It may be quicker to delete the file and create a new one than to
reset it, but doing so opens you up to a race condition that trips up
a careless program or makes it vulnerable to an attacker. The
attacker could make a link pointing to the file
/etc/precious with the same name as your file
between the time when you deleted the file and when you recreated it.
When the DBM library opens the file, it clobbers
/etc/precious.

If you delete a DB_File database and recreate it, you'll lose any
customizable settings like page size, fill-factor, and so on. This is
another good reason to assign the empty list to the tied hash.

14.2.4. See Also


The documentation for the standard DB_File module, also in Chapter 32
of Programming Perl; the
unlink function in
perlfunc(1); Recipe 14.1

/ 875