GoGPT Best VPN GoSearch

Icône de favori OnWorks

perldbmfilter – En ligne dans le Cloud

Exécutez perldbmfilter dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande perldbmfilter qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos nombreux postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


perldbmfilter - Filtres DBM Perl

SYNOPSIS


$db = lien %hash, 'DBM', ...

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

DESCRIPTION


Les quatre méthodes « filter_* » présentées ci-dessus sont disponibles dans tous les modules DBM fournis
avec Perl, à savoir DB_File, GDBM_File, NDBM_File, ODBM_File et SDBM_File.

Chacune des méthodes fonctionne de manière identique et est utilisée pour installer (ou désinstaller) un seul DBM
Filtre. La seule différence réside dans l'emplacement où le filtre est installé.

Pour résumer:

filtre_store_key
Si un filtre a été installé avec cette méthode, il sera invoqué à chaque fois que vous
écrire une clé dans une base de données DBM.

filtre_store_value
Si un filtre a été installé avec cette méthode, il sera invoqué à chaque fois que vous
écrire une valeur dans une base de données DBM.

filtre_fetch_key
Si un filtre a été installé avec cette méthode, il sera invoqué à chaque fois que vous
lire une clé à partir d'une base de données DBM.

filtre_fetch_value
Si un filtre a été installé avec cette méthode, il sera invoqué à chaque fois que vous
lire une valeur à partir d'une base de données DBM.

Vous pouvez utiliser n’importe quelle combinaison de méthodes, de aucune à toutes les quatre.

Toutes les méthodes de filtrage renvoient le filtre existant, s'il est présent, ou « undef » dans le cas contraire.

Pour supprimer un filtre, passez-lui « undef ».

Le manuel de formation Filtre
Lorsque chaque filtre est appelé par Perl, une copie locale de $_ contiendra la clé ou la valeur à
filtré. Le filtrage est réalisé en modifiant le contenu de $_. Le code de retour de
le filtre est ignoré.

An Exemple : le NULL un licenciement problème.
Les filtres DBM sont utiles pour une classe de problèmes où vous toujours je veux faire la même chose
transformation vers toutes les clés, toutes les valeurs ou les deux.

Prenons par exemple le scénario suivant : vous disposez d'une base de données DBM que vous devez
partager avec une application C tierce. L'application C suppose que tous clés et valeurs
sont terminées par NULL. Malheureusement, lorsque Perl écrit dans des bases de données DBM, il n'utilise pas NULL.
votre application Perl devra donc gérer elle-même la terminaison NULL.
vous écrivez dans la base de données, vous devrez utiliser quelque chose comme ceci :

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

De même, le NULL doit être pris en compte lorsque vous considérez la longueur de
clés/valeurs existantes.

Il serait bien mieux si vous pouviez ignorer le problème des terminaisons NULL dans le fichier principal
code d'application et disposer d'un mécanisme qui ajoute automatiquement le NULL de fin à tous
clés et valeurs à chaque fois que vous écrivez dans la base de données et les supprimez lorsque vous lisez
de la base de données. Comme vous l'avez sans doute déjà deviné, il s'agit d'un problème que DBM
Les filtres peuvent être réparés très facilement.

utiliser strict;
utiliser des avertissements ;
utiliser SDBM_File;
utilisez Fcntl ;

mon %hachage ;
mon $filename = "filt";
dissocier $filename;

mon $db = tie(%hash, 'SDBM_File', $filename, O_RDWR|O_CREAT, 0640)
ou die "Impossible d'ouvrir $filename : $!\n" ;

# Installer les filtres DBM
$db->filter_fetch_key ( sous { s/\0$// } );
$db->filter_store_key ( sous { $_ .= "\0" } );
$db->filter_fetch_value(
sub { aucun avertissement 'non initialisé'; s/\0$// } );
$db->filter_store_value( sous { $_ .= "\0" } );

$hash{"abc"} = "def";
mon $a = $hash{"ABC"};
#...
indéfini $db;
délier %hash;

Le code ci-dessus utilise SDBM_File, mais il fonctionnera avec n'importe lequel des modules DBM.

Le contenu de chaque filtre devrait être explicite. Les deux filtres « récupérer »
les filtres suppriment le NULL de terminaison, et les deux filtres « store » ajoutent un NULL de terminaison.

Une autre Exemple : ACTIVITES is a C int.
Voici un autre exemple concret. Par défaut, chaque fois que Perl écrit dans une base de données DBM, il
La clé et la valeur sont toujours écrites sous forme de chaînes. Ainsi, lorsque vous utilisez ceci :

$hash{12345} = "quelque chose";

La clé 12345 sera stockée dans la base de données DBM sous la forme d'une chaîne de 5 octets « 12345 ». Si vous
en fait, vous voulez que la clé soit stockée dans la base de données DBM en tant qu'int C, vous devrez utiliser
« emballer » lors de l'écriture et « déballer » lors de la lecture.

Voici un filtre DBM qui le fait :

utiliser strict;
utiliser des avertissements ;
utiliser DB_File;
mon %hachage ;
mon $filename = "filt";
dissocier $filename;

mon $db = tie %hash, 'DB_File', $filename, O_CREAT|O_RDWR, 0666,
$DB_HASH ou mourir "Impossible d'ouvrir $filename : $!\n";

$db->filter_fetch_key ( sous { $_ = unpack("i", $_) } );
$db->filter_store_key ( sous { $_ = pack ("i", $_) } );
$hash{123} = "def";
#...
indéfini $db;
délier %hash;

Le code ci-dessus utilise DB_File, mais encore une fois, il fonctionnera avec n'importe lequel des modules DBM.

Cette fois, seuls deux filtres ont été utilisés ; il suffit de manipuler le contenu du
clé, il n'était donc pas nécessaire d'installer de filtres de valeur.

Utilisez perldbmfilter en ligne avec les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

Commandes Linux

Ad




×
Publicité
❤ ️Achetez, réservez ou achetez ici — gratuitement, contribue à maintenir la gratuité des services.