je débute en perl pour faire de petits scripts (pour Irssi) et j'ai un
soucis qui doit sembler ridicule.
j'envoit une chaine de caractères à une sub, laquelle doit prendre le
premier mot comme étant un nom de variable et le reste comme son contenu
(pour faire un fichier de variables).
Par exemple j'envoit "state currently awaiting" et je voudrais mettre
dans mon fichier: "state:currently awaiting"
J'essaye de faire:
sub xa_set() {
my ($key, $xavalue) = @_;
if(!(open xa_settings, ">$xa_confile")) {
&putlog("Unable to create file $xa_confile");
}
print xa_settings "$key:$xavalue";
close xa_settings;
}
Avec ça, je me retrouve avec "state currently
awaiting:Irssi::Irc::Server=HASH(0x8336ca0)" dans le fichier.
Quelqu'un saurait-il comment faire pour que $key contienne le 1er mot et
$xavalue le reste?
J'ai essayé aussi en faisant:
sub xa_set() {
my $key = shift(@_);
my $xavalue = @_;
...
}
qui me ressort: "state currently awaiting:2"
Merci d'avance
--
Aide informatique: http://help-info.forumactif.com
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net
lourd? Personnellement, j'ai tendance à l'éclater les instructions afin que ce soit le plus clair possible. C'est également bien plus maintenable qu'avec un truc du style : "my ($key, $xavalue) = shift =~ /^(S+) (.*)/ "
Pas troll ;-) Par contre je suis preneur d'une petit explication sur l'anchaînement ... = shift =~ ...
Merci.
Nicolas.
-- Powered .~. by Linux /V Enlever ------ // Take off solutions for /( ) BULBA smart penguins ^`~'^
lourd? Personnellement, j'ai tendance à l'éclater les instructions
afin que ce soit le plus clair possible. C'est également bien plus
maintenable qu'avec un truc du style :
"my ($key, $xavalue) = shift =~ /^(S+) (.*)/ "
Pas troll ;-)
Par contre je suis preneur d'une petit explication
sur l'anchaînement ... = shift =~ ...
Merci.
Nicolas.
--
Powered .~.
by Linux /V Enlever
------ // \ Take off
solutions for /( ) BULBA
smart penguins ^`~'^
lourd? Personnellement, j'ai tendance à l'éclater les instructions afin que ce soit le plus clair possible. C'est également bien plus maintenable qu'avec un truc du style : "my ($key, $xavalue) = shift =~ /^(S+) (.*)/ "
Pas troll ;-) Par contre je suis preneur d'une petit explication sur l'anchaînement ... = shift =~ ...
Merci.
Nicolas.
-- Powered .~. by Linux /V Enlever ------ // Take off solutions for /( ) BULBA smart penguins ^`~'^
Sébastien Bourgasser
Pas troll ;-) Par contre je suis preneur d'une petit explication sur l'anchaînement ... = shift =~ ...
$argument =~ /^(S+) (.*)/ crée $1 et $2 qui contiennent la sélection.
my ($var1,$var2) = $argument =~ /regexp/ attribue $1 à $var1 et $2 à $var2
Dans notre exemple, $argument correspond à l'argument passé à la fonction. $argument = shift (@_ est implicite)
On peut donc éviter de créer une variable $argument et travailler directement avec @_ via shift:
$my ($var1,$var2) = shift =~ /regexp/;
J'espère que vous m'avez compris car je ne suis pas très bon pédagogue :)
A+
-- Séb
Pas troll ;-)
Par contre je suis preneur d'une petit explication
sur l'anchaînement ... = shift =~ ...
$argument =~ /^(S+) (.*)/ crée $1 et $2 qui contiennent la sélection.
my ($var1,$var2) = $argument =~ /regexp/ attribue $1 à $var1 et $2 à $var2
Dans notre exemple, $argument correspond à l'argument passé à la
fonction. $argument = shift (@_ est implicite)
On peut donc éviter de créer une variable $argument et travailler
directement avec @_ via shift:
$my ($var1,$var2) = shift =~ /regexp/;
J'espère que vous m'avez compris car je ne suis pas très bon pédagogue :)