এটি হল perldbmfilter কমান্ড যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।
কার্যক্রম:
NAME এর
perldbmfilter - পার্ল DBM ফিল্টার
সাইনোপিসিস
$db = টাই %হ্যাশ, 'DBM', ...
$old_filter = $db->filter_store_key ( sub { ... } );
$old_filter = $db->filter_store_value( sub { ... } );
$old_filter = $db->filter_fetch_key ( sub { ... } );
$old_filter = $db->filter_fetch_value( sub { ... } );
বর্ণনাঃ
উপরে দেখানো চারটি "ফিল্টার_*" পদ্ধতি সমস্ত ডিবিএম মডিউলে পাওয়া যায় যেগুলি পাঠানো হয়৷
পার্লের সাথে, যথা DB_File, GDBM_File, NDBM_File, ODBM_File এবং SDBM_File।
প্রতিটি পদ্ধতি একইভাবে কাজ করে এবং একটি একক DBM ইনস্টল (বা আনইনস্টল) করতে ব্যবহৃত হয়
ছাঁকনি. তাদের মধ্যে পার্থক্য শুধুমাত্র ফিল্টার ইনস্টল করা হয় যে জায়গা হয়.
সংক্ষেপ:
filter_store_key
যদি এই পদ্ধতিতে একটি ফিল্টার ইনস্টল করা থাকে, তাহলে প্রতিবারই এটিকে আহ্বান করা হবে
একটি DBM ডাটাবেসের একটি কী লিখুন।
ফিল্টার_স্টোর_মান
যদি এই পদ্ধতিতে একটি ফিল্টার ইনস্টল করা থাকে, তাহলে প্রতিবারই এটিকে আহ্বান করা হবে
একটি DBM ডাটাবেসে একটি মান লিখুন।
ফিল্টার_ফেচ_কী
যদি এই পদ্ধতিতে একটি ফিল্টার ইনস্টল করা থাকে, তাহলে প্রতিবারই এটিকে আহ্বান করা হবে
একটি DBM ডাটাবেস থেকে একটি কী পড়ুন।
ফিল্টার_ফেচ_মান
যদি এই পদ্ধতিতে একটি ফিল্টার ইনস্টল করা থাকে, তাহলে প্রতিবারই এটিকে আহ্বান করা হবে
একটি DBM ডাটাবেস থেকে একটি মান পড়ুন।
আপনি কোনটি থেকে চারটি পদ্ধতির যেকোন সমন্বয় ব্যবহার করতে পারেন।
সমস্ত ফিল্টার পদ্ধতি বিদ্যমান ফিল্টার প্রদান করে, যদি উপস্থিত থাকে, অথবা না থাকলে "undef"।
একটি ফিল্টার মুছে ফেলার জন্য এটি "undef" পাস.
সার্জারির ফিল্টার
যখন প্রতিটি ফিল্টার পার্ল দ্বারা কল করা হয়, তখন $_ এর একটি স্থানীয় অনুলিপিতে কী বা মান থাকবে
ফিল্টার করা $_ এর বিষয়বস্তু পরিবর্তন করে ফিল্টারিং করা হয়। থেকে রিটার্ন কোড
ফিল্টার উপেক্ষা করা হয়।
An উদাহরণ: দ্য শূন্য পরিসমাপ্তি সমস্যা.
DBM ফিল্টারগুলি এক শ্রেণীর সমস্যার জন্য দরকারী যেখানে আপনি সর্বদা একই করতে চান
সমস্ত কী, সমস্ত মান বা উভয়ের রূপান্তর।
উদাহরণস্বরূপ, নিম্নলিখিত দৃশ্যকল্প বিবেচনা করুন। আপনার একটি DBM ডাটাবেস আছে যা আপনার প্রয়োজন
একটি তৃতীয় পক্ষের সি অ্যাপ্লিকেশনের সাথে শেয়ার করুন। সি অ্যাপ্লিকেশন অনুমান করে যে সব কী এবং মান
NULL সমাপ্ত হয়। দুর্ভাগ্যবশত যখন পার্ল DBM ডাটাবেসে লেখেন তখন এটি NULL ব্যবহার করে না
পরিসমাপ্তি, তাই আপনার পার্ল অ্যাপ্লিকেশনটি নাল টার্মিনেশন নিজেই পরিচালনা করতে হবে। কখন
আপনি ডাটাবেসে লিখবেন আপনাকে এরকম কিছু ব্যবহার করতে হবে:
$hash{"$key\0"} = "$value\0";
একইভাবে যখন আপনি দৈর্ঘ্য বিবেচনা করছেন তখন NULL কে বিবেচনায় নেওয়া দরকার
বিদ্যমান কী/মান।
আপনি যদি প্রধান শূন্য সমাপ্তির সমস্যাটিকে উপেক্ষা করতে পারেন তবে এটি আরও ভাল হবে
অ্যাপ্লিকেশন কোড এবং একটি পদ্ধতি আছে যা স্বয়ংক্রিয়ভাবে সকলের সাথে সমাপ্ত NULL যোগ করে
কী এবং মান যখনই আপনি ডাটাবেসে লিখবেন এবং পড়ার সময় সেগুলি সরিয়ে ফেলুন
ডাটাবেস থেকে। আমি নিশ্চিত যে আপনি ইতিমধ্যে অনুমান করেছেন, এটি একটি সমস্যা যা ডিবিএম
ফিল্টার খুব সহজে ঠিক করতে পারে।
কঠোর ব্যবহার করুন;
সতর্কতা ব্যবহার করুন;
SDBM_File ব্যবহার করুন;
Fcntl ব্যবহার করুন;
আমার % হ্যাশ;
আমার $filename = "ফিল্ট";
$filename লিঙ্কমুক্ত করুন;
আমার $db = টাই(%হ্যাশ, 'SDBM_File', $filename, O_RDWR|O_CREAT, 0640)
অথবা ডাই "$filename খুলতে পারে না: $!\n";
# DBM ফিল্টার ইনস্টল করুন
$db->filter_fetch_key ( সাব { s/\0$// });
$db->filter_store_key ( সাব { $_ .= "\0" });
$db->filter_fetch_value(
সাব { কোন সতর্কতা 'আনিনিটিয়ালাইজড'; s/\0$// });
$db->filter_store_value( সাব { $_ .= "\0" });
$hash{"abc"} = "def";
আমার $a = $হ্যাশ{"ABC"};
#...
undef $db;
%hash খুলুন;
উপরের কোডটি SDBM_File ব্যবহার করে, কিন্তু এটি যেকোনো DBM মডিউলের সাথে কাজ করবে।
আশা করি প্রতিটি ফিল্টারের বিষয়বস্তু স্ব-ব্যাখ্যামূলক হওয়া উচিত। উভয়ই "আনয়ন"
ফিল্টার সমাপ্ত NULL সরিয়ে দেয়, এবং উভয় "স্টোর" ফিল্টার একটি সমাপ্ত NULL যোগ করে।
অন্য উদাহরণ: চাবি is a C int- এ।
এখানে আরেকটি বাস্তব জীবনের উদাহরণ। ডিফল্টরূপে, যখনই পার্ল একটি DBM ডাটাবেসে এটি লেখে
সর্বদা কী এবং মান স্ট্রিং হিসাবে লেখে। সুতরাং আপনি যখন এটি ব্যবহার করেন:
$hash{12345} = "কিছু";
কী 12345 ডিবিএম ডাটাবেসে 5 বাইট স্ট্রিং "12345" হিসাবে সংরক্ষণ করা হবে। আপনি যদি
আসলে চাবিটি DBM ডাটাবেসে C int হিসাবে সংরক্ষণ করতে চান, আপনাকে ব্যবহার করতে হবে
লেখার সময় "প্যাক" এবং পড়ার সময় "আনপ্যাক"।
এখানে একটি DBM ফিল্টার যা এটি করে:
কঠোর ব্যবহার করুন;
সতর্কতা ব্যবহার করুন;
DB_File ব্যবহার করুন;
আমার % হ্যাশ;
আমার $filename = "ফিল্ট";
$filename লিঙ্কমুক্ত করুন;
আমার $db = টাই %হ্যাশ, 'DB_File', $filename, O_CREAT|O_RDWR, 0666,
$DB_HASH বা ডাই "$filename: $!\n" খুলতে পারে না;
$db->filter_fetch_key ( সাব { $_ = আনপ্যাক("i", $_) });
$db->filter_store_key ( সাব { $_ = প্যাক ("i", $_) });
$hash{123} = "def";
#...
undef $db;
%hash খুলুন;
উপরের কোডটি DB_File ব্যবহার করে, কিন্তু আবার এটি যেকোনো DBM মডিউলের সাথে কাজ করবে।
এবার মাত্র দুটি ফিল্টার ব্যবহার করা হয়েছে; আমরা শুধুমাত্র বিষয়বস্তু ম্যানিপুলেট করতে হবে
কী, তাই কোনো মান ফিল্টার ইনস্টল করার প্রয়োজন ছিল না।
onworks.net পরিষেবা ব্যবহার করে অনলাইনে perldbmfilter ব্যবহার করুন