OVH Cloud OVH Cloud

créer et effacer un fichier avec un script perl

5 réponses
Avatar
bricem13
Bonjour

J'ai fait un petit script perl (malgr=E9 que je ne sache que peu - pas -
programmer en perl). Il doit simplement r=E9agir =E0 xscreensaver et
cr=E9er un fichier vide lorsque celui-ci est actif mais il ne marche pas
et je ne sais pas comment le d=E9bogguer...

Le script est le suivant:

#!/usr/bin/perl

# creates a file if xscreensaver is running or locked
my $createfile =3D `touch ~/.fvwm/scripts/xscreen_active`;
my $deletefile =3D `rm ~/.fvwm/scripts/xscreen_active`;

open (IN, "xscreensaver-command -watch |");
while (<IN>) {
if (m/^(BLANK|LOCK)/) {
chomp( $createfile );
} elsif (m/^UNBLANK/) {
chomp( $deletefile );
}
}


Je ne vois pas pourquoi il ne marche pas!

Si quelqu'un a une petite id=E9e, =E7a serait gentil de m'aider!

Merci Brice

5 réponses

Avatar
dominix
Bonjour



salut

...
Le script est le suivant:

#!/usr/bin/perl

# creates a file if xscreensaver is running or locked
my $createfile = `touch ~/.fvwm/scripts/xscreen_active`;
my $deletefile = `rm ~/.fvwm/scripts/xscreen_active`;



truc pour comprendre :
$createfile est une "variable"
et ce qui est entouré de ` ` est exécuté dans un shell


open (IN, "xscreensaver-command -watch |");
while (<IN>) {
if (m/^(BLANK|LOCK)/) {
chomp( $createfile );


ici ça fait quelque chose sur une variable
-> truc : cette variable est vide

} elsif (m/^UNBLANK/) {
chomp( $deletefile );


et là pareil.

}
}


Je ne vois pas pourquoi il ne marche pas!


il marche tres bien, il fait ce que tu lui dit de faire


Si quelqu'un a une petite idée, ça serait gentil de m'aider!



le probleme c'est ce que tu pense que ca fait.
essaye de mettre une "action" dans la boucle.

Merci Brice


Avatar
Paul Gaborit
À (at) 19 Jul 2005 10:27:44 -0700,
écrivait (wrote):
Bonjour

J'ai fait un petit script perl (malgré que je ne sache que peu - pas -
programmer en perl). Il doit simplement réagir à xscreensaver et
créer un fichier vide lorsque celui-ci est actif mais il ne marche pas
et je ne sais pas comment le débogguer...

Le script est le suivant:

#!/usr/bin/perl

# creates a file if xscreensaver is running or locked
my $createfile = `touch ~/.fvwm/scripts/xscreen_active`;
my $deletefile = `rm ~/.fvwm/scripts/xscreen_active`;


Ici, les deux commandes ci-dessus (le 'touch' et le 'rm') ont déjà été
exécutées.

Écrivez plutôt :

my $createfile = 'touch ~/.fvwm/scripts/xscreen_active';
my $deletefile = 'rm ~/.fvwm/scripts/xscreen_active';

pour stocker les commandes dans des variables au lieu de stocker le
résultat de leur exécution...

open (IN, "xscreensaver-command -watch |");
while (<IN>) {
if (m/^(BLANK|LOCK)/) {
chomp( $createfile );
system($createfile);# le chomp ne sert à rien...

} elsif (m/^UNBLANK/) {
chomp( $deletefile );
system($deletefile); # idem...

}
}


Je ne vois pas pourquoi il ne marche pas!




--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

Avatar
bricem13
bonjour

j'ai réglé le pbm en faisant:

#!/usr/bin/perl

# creates a file if xscreensaver is running or locked

open (IN, "xscreensaver-command -watch |");
while (<IN>) {
if (m/^(BLANK|LOCK)/) {
$createfile = `touch ~/.fvwm/scripts/xscreen_active` ;
} elsif (m/^UNBLANK/) {
$deletefile = `rm ~/.fvwm/scripts/xscreen_active` ;
}
}


j'espère que c'est tout bon!

Merci

Brice
Avatar
bricem13
Ok merci!

je vais aussi jeter un oeil sur votre page perso et le cours perl qui y
est!

Brice
Avatar
Laurent Wacrenier
écrit:

#!/usr/bin/perl

# creates a file if xscreensaver is running or locked
my $createfile = `touch ~/.fvwm/scripts/xscreen_active`;
my $deletefile = `rm ~/.fvwm/scripts/xscreen_active`;

open (IN, "xscreensaver-command -watch |");


Quite à lancer un shell par ligne, refaire ça shell.