perldbmfilter - क्लाउड में ऑनलाइन

यह कमांड perldbmfilter है जिसे हमारे कई मुफ्त ऑनलाइन वर्कस्टेशन जैसे उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर का उपयोग करके ऑनवर्क्स फ्री होस्टिंग प्रदाता में चलाया जा सकता है।

कार्यक्रम:

नाम


perldbmfilter - पर्ल डीबीएम फ़िल्टर

SYNOPSIS


$db = टाई %हैश, 'DBM', ...

$old_filter = $db->filter_store_key (उप { ... } );
$old_filter = $db->filter_store_value(उप { ... } );
$old_filter = $db->filter_fetch_key (उप { ... } );
$old_filter = $db->filter_fetch_value(sub { ... } );

वर्णन


ऊपर दिखाए गए चार "फ़िल्टर_*" तरीके शिप किए गए सभी डीबीएम मॉड्यूल में उपलब्ध हैं
पर्ल के साथ, अर्थात् DB_File, GDBM_File, NDBM_File, ODBM_File और SDBM_File।

प्रत्येक विधि समान रूप से काम करती है, और इसका उपयोग एकल DBM को स्थापित (या अनइंस्टॉल) करने के लिए किया जाता है
फ़िल्टर करें. उनके बीच एकमात्र अंतर वह स्थान है जहां फ़िल्टर स्थापित किया गया है।

संक्षेपित करते हुए:

फ़िल्टर_स्टोर_की
यदि इस पद्धति से कोई फ़िल्टर स्थापित किया गया है, तो इसे हर बार आपके द्वारा लागू किया जाएगा
DBM डेटाबेस के लिए एक कुंजी लिखें.

फ़िल्टर_स्टोर_वैल्यू
यदि इस पद्धति से कोई फ़िल्टर स्थापित किया गया है, तो इसे हर बार आपके द्वारा लागू किया जाएगा
DBM डेटाबेस के लिए एक मान लिखें.

फ़िल्टर_फ़ेच_की
यदि इस पद्धति से कोई फ़िल्टर स्थापित किया गया है, तो इसे हर बार आपके द्वारा लागू किया जाएगा
DBM डेटाबेस से एक कुंजी पढ़ें.

फ़िल्टर_fetch_value
यदि इस पद्धति से कोई फ़िल्टर स्थापित किया गया है, तो इसे हर बार आपके द्वारा लागू किया जाएगा
DBM डेटाबेस से एक मान पढ़ें।

आप किसी से लेकर सभी चार तक विधियों के किसी भी संयोजन का उपयोग कर सकते हैं।

सभी फ़िल्टर विधियाँ मौजूदा फ़िल्टर लौटाती हैं, यदि मौजूद है, या यदि नहीं है तो "अनिर्धारित" कर देती हैं।

किसी फ़िल्टर को हटाने के लिए उसमें "अनडिफ़" पास करें।

RSI फ़िल्टर
जब प्रत्येक फ़िल्टर को पर्ल द्वारा कॉल किया जाता है, तो $_ की एक स्थानीय प्रतिलिपि में कुंजी या मान शामिल होगा
छाना हुआ। $_ की सामग्री को संशोधित करके फ़िल्टरिंग प्राप्त की जाती है। से वापसी कोड
फ़िल्टर को नजरअंदाज कर दिया गया है.

An उदाहरण: la नल समाप्ति समस्या.
DBM फ़िल्टर आपकी समस्याओं के एक वर्ग के लिए उपयोगी हैं हमेशा वैसा ही बनाना चाहते हैं
सभी कुंजियों, सभी मानों या दोनों में परिवर्तन।

उदाहरण के लिए, निम्नलिखित परिदृश्य पर विचार करें. आपके पास एक DBM डेटाबेस है जिसकी आपको आवश्यकता है
किसी तृतीय-पक्ष C एप्लिकेशन के साथ साझा करें। सी एप्लिकेशन यह मानता है सब कुंजियाँ और मान
शून्य समाप्त कर दिए गए हैं. दुर्भाग्य से जब पर्ल डीबीएम डेटाबेस पर लिखता है तो वह NULL का उपयोग नहीं करता है
समाप्ति, इसलिए आपके पर्ल एप्लिकेशन को स्वयं शून्य समाप्ति का प्रबंधन करना होगा। कब
आप डेटाबेस में लिखते हैं तो आपको कुछ इस तरह का उपयोग करना होगा:

$hash{"$key\0"} = "$value\0";

इसी प्रकार जब आप लंबाई पर विचार कर रहे हों तो NULL को भी ध्यान में रखना होगा
मौजूदा कुंजियाँ/मान।

यह बहुत बेहतर होगा यदि आप मुख्य रूप से NULL समाप्ति मुद्दे को अनदेखा कर सकें
एप्लिकेशन कोड और एक ऐसा तंत्र है जो स्वचालित रूप से सभी में समाप्ति NULL को जोड़ देता है
जब भी आप डेटाबेस पर लिखते हैं तो कुंजियाँ और मान और पढ़ते समय उन्हें हटा दें
डेटाबेस से. जैसा कि मुझे यकीन है कि आप पहले ही अनुमान लगा चुके होंगे, यह एक समस्या है कि DBM
फ़िल्टर बहुत आसानी से ठीक हो सकते हैं.

सख्त उपयोग करें;
चेतावनी का उपयोग करें;
SDBM_फ़ाइल का उपयोग करें;
एफसीएनटीएल का उपयोग करें;

मेरा% हैश;
मेरा $फ़ाइलनाम = "फ़िल्टर";
$फ़ाइल नाम अनलिंक करें;

मेरा $db = टाई(%हैश, 'SDBM_फ़ाइल', $फ़ाइलनाम, O_RDWR|O_CREAT, 0640)
या मरो "$फ़ाइल नाम नहीं खोल सकता: $!\n";

# DBM फ़िल्टर स्थापित करें
$db->filter_fetch_key ( उप { s/\0$// } );
$db->filter_store_key (उप { $_ .= "\0" } );
$db->filter_fetch_value(
उप { कोई चेतावनी नहीं 'अप्रारंभिक'; s/\0$// } );
$db->filter_store_value(sub { $_ .= "\0" } );

$हैश{"एबीसी"} = "डीईएफ़";
मेरा $a = $hash{"ABC"};
#...
अपरिभाषित $db;
%हैश खोलो;

उपरोक्त कोड SDBM_File का उपयोग करता है, लेकिन यह किसी भी DBM मॉड्यूल के साथ काम करेगा।

आशा है कि प्रत्येक फ़िल्टर की सामग्री स्व-व्याख्यात्मक होनी चाहिए। दोनों "लाओ"
फ़िल्टर समाप्ति NULL को हटा देते हैं, और दोनों "स्टोर" फ़िल्टर एक समाप्ति NULL जोड़ते हैं।

अन्य उदाहरण: कुंजी is a C पूर्णांक।
यहाँ एक और वास्तविक जीवन का उदाहरण है। डिफ़ॉल्ट रूप से, जब भी पर्ल DBM डेटाबेस पर लिखता है
हमेशा कुंजी और मान को स्ट्रिंग के रूप में लिखता है। तो जब आप इसका उपयोग करते हैं:

$हैश{12345} = "कुछ";

कुंजी 12345 डीबीएम डेटाबेस में 5 बाइट स्ट्रिंग "12345" के रूप में संग्रहीत हो जाएगी। अगर आप
वास्तव में कुंजी को डीबीएम डेटाबेस में सी इंट के रूप में संग्रहीत करना चाहते हैं, आपको इसका उपयोग करना होगा
लिखते समय "पैक करें", और पढ़ते समय "अनपैक करें"।

यहां एक DBM फ़िल्टर है जो यह करता है:

सख्त उपयोग करें;
चेतावनी का उपयोग करें;
DB_फ़ाइल का उपयोग करें;
मेरा% हैश;
मेरा $फ़ाइलनाम = "फ़िल्टर";
$फ़ाइल नाम अनलिंक करें;

मेरा $db = टाई %हैश, 'DB_फ़ाइल', $फ़ाइलनाम, O_CREAT|O_RDWR, 0666,
$DB_HASH या मरें "$फ़ाइलनाम नहीं खोल सकता: $!\n";

$db->filter_fetch_key (उप { $_ = अनपैक("i", $_) } );
$db->filter_store_key (उप {$_ = पैक ("i", $_) });
$हैश{123} = "डीईएफ़";
#...
अपरिभाषित $db;
%हैश खोलो;

उपरोक्त कोड DB_File का उपयोग करता है, लेकिन फिर से यह किसी भी DBM मॉड्यूल के साथ काम करेगा।

इस बार केवल दो फिल्टर का उपयोग किया गया है; हमें केवल इसकी सामग्री में हेरफेर करने की आवश्यकता है
कुंजी, इसलिए कोई मान फ़िल्टर स्थापित करना आवश्यक नहीं था।

onworks.net सेवाओं का उपयोग करके ऑनलाइन perldbmfilter का उपयोग करें



नवीनतम Linux और Windows ऑनलाइन प्रोग्राम