Bonjour,
Je vous sollicité pour un problème que j'imagine tout bête mais je n'en vois la logique
Je souhaite créer un hash en lisant un fichier texte et récupérant deux valeurs (key et value) selon des critères.
Les deux valeurs sont bien récupérées, voir le dernier résultat.
Exemple de fichier source:
Résultat attenduSNMPv2-SMI::mib-2.47.1.1.1.1.11.1 = ""
SNMPv2-SMI::mib-2.47.1.1.1.1.11.1001 = STRING: "FCW2024A2W3"
SNMPv2-SMI::mib-2.47.1.1.1.1.11.1002 = ""
SNMPv2-SMI::mib-2.47.1.1.1.1.11.1003 = ""
SNMPv2-SMI::mib-2.47.1.1.1.1.11.1004 = ""
SNMPv2-SMI::mib-2.47.1.1.1.1.11.1005 = ""
SNMPv2-SMI::mib-2.47.1.1.1.1.11.1006 = STRING: "DCB201660EM"
SNMPv2-SMI::mib-2.47.1.1.1.1.11.1007 = ""
key 1001 value FCW2024A2W3
key 1006 value DCB201660EM
Résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 use strict; use warnings; use Data::Dumper; use feature 'say'; no warnings 'uninitialized'; open (my $serial, "<", "$ARGV[0]"); my $hash; while (<$serial>) { next if $_ =~ /""/; $_ =~ s/"//g; my ($OID, $serie) = (split /[.\s]/)[7,-1]; $hash{$OID} = $serie; } print Dumper \%hash;
$ perl test.pl serial.txt
Global symbol "%hash" requires explicit package name (did you forget to declare "my %hash"?) at test.pl line 24.
Global symbol "%hash" requires explicit package name (did you forget to declare "my %hash"?) at test.pl line 28.
Execution of test.pl aborted due to compilation errors.
j'ai bien les valeurs si j'affiche les valeurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 while (<$serial>) { next if $_ =~ /""/; $_ =~ s/"//g; my ($OID, $serie) = (split /[.\s]/)[7,-1]; say "$OID et $serie"; }
Résultat:
$ perl test.pl serial.txt
1001 et FCW2024A2W3
1006 et DCB201660EM
Merci !
Partager