Par défaut Can't find string terminator "EOF"

Fermé
Zarkoffe - Modifié le 14 mars 2022 à 06:12
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 - 18 mars 2022 à 17:24
Bonjour à tous,

Je m'exerce au PERL à travers la création d'un petit script pour mon serveur Nagios.
J'ai l'erreur suivante :
Can't find string terminator "EOF" anywhere before EOF at check_disque.pl line 15.

Mon script est le suivant :
#!/usr/bin/perl
#=====================================================================
# Auteur : Admin
# Date   : 13/03/2022
# But    : plugin Nagios pour vérifier l'espace disque utilisé
#=====================================================================
# Module à utiliser
use strict;
use warnings;
use Nagios::Plugin;
use feature qw(switch say);
use Getopt::Long;
 
# Détails de l'écran d'aide
my $help = <<EOF;
 Plugin Nagios pour contrôler l'espace disque
 
  usage: $0 -w Warning --c Critical
 
Options:
 -h, --help
       L'écran de l'aide
 -w, --warning=INTEGER
       Le seuil d'avertissement
 -c, --critical=INTEGER
       Le seuil critique
 
       exemples:
       $0  -w 80 -c 90
EOF
  my $warning=0;
  my $critical=0;
  my $exit=0;
# Récupération des valeurs de paramètres
my $result = GetOptions(
   "w|warning=i"=> \$warning,
   "c|critical=i" => \$critical,
   "h|help"  => \$help,
);
...


Merci d'avance les perleux !
A voir également:

1 réponse

[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
Modifié le 18 mars 2022 à 17:25
Salut Zarkoffe,

Tu as une erreur sur ton instruction here doc.

Cette erreur peut se produire si le marqueur choisi pour délimiter la fin de ton texte n'est pas exactement en début de ligne (c'est à dire en 1ère colonne), ou s'il n'existe pas.

S'il y a un espace avant, par exemple.

Dans ce que tu as posté, on ne voit pas d'espace ou autre caractère blanc avant, mais comme ton post a été édité et que tu ne l'avais pas initialement posté avec les balises de code, il se peut qu'il n'apparaisse pas sur le forum tel que tu l'as sur ta machine.

Il existe aussi une syntaxe permettant de placer le délimiteur du here doc de façon indentée.

Il faut alors ajouter un modificateur
~
comme ceci :
my $help = <<~EOF;
et le délimiteur peut être indenté.

https://perldoc.perl.org/perlop#Indented-Here-docs

Dal
0