my $chaine = "toto#titi#tata#tutu";
my $hash = {};
$hash->{TABLEAU} = split(/#/, $chaine);
print $hash->{TABLEAU}[1];
Et l'erreur renvoyée :
Can't use string ("4") as an ARRAY ref while "strict refs" in use at - line 6.
D'après le manuel, la fonction split utilisée dans un contexte scalaire renvoie le nombre d'éléments, ce qui expliquerait que mon $hash->{TABLEAU} vale 4.
Comment puis-je forcer l'utilisation d'un tableau ??
Je suis en train d'adapter des scripts shell UNIX en scripts PERL sous windows.
Mon problème est le suivant :
On me fournit un fichier de configuration (déclaration de variables) qui était sourcé dans les scripts shells.
Les variables déclarées dedans peuvent être de la forme VAR2=$HOME/toto/titi
La présence d'une variable au sein même de la déclaration de VAR2 ne pose donc aucun souci.
Mes ennuis arrivent lorsque je veux utiliser ce même fichier de configuration dans (...)
Je cherche à effectuer une boucle for pour chaque fichier matchant avec un pattern.
Un exemple valant mieux qu'un long discours, voici ce que je cherche à faire :
#!/bin/ksh
set -A EXTENSIONS txt ksh
pattern=$(echo ${EXTENSIONS[@]} | tr " " "|")
for file in *.@(${pattern})
do
cat file
done
Mon seul problème est que les pipes dans la variable pattern ne sont pas interprétés en tant que séparateurs... Il y a bien une solution de contournement mais qui (...)