uninitialized value

Le
Jo Engo
Bonjour,

Je tente de débugger webcollage de xscreensaver, c'est du perl, car il me
sort l'erreur suivante :

Use of uninitialized value $id in concatenation (.) or string at /usr/lib/
xscreensaver/webcollage line 2159.

or voici les lignes 2158 et 2159 :

my ($id) = ($img =~ m@/d+/(d+)_([da-f]+)_@si);
my ($page) = "https://www.flickr.com/photos/$user/$id/";

$id me semble bel et bien être initialisé, non ??

Il n'y a pas j'espère de goto en perl, alors ¿que pasa?

j'xposte avec fcolc et mets le suivi sur fcl.perl, ce dernier donnant
l'air d'être déerté
--
ŒUVRE DE FOI

P : T'es en train de nous chier un chapelet !
M : Ouais Et le plus dur, c'est de faire la croix
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Marc SCHAEFER
Le #26519852
In fr.comp.lang.perl Jo Engo
my ($id) = ($img =~ m@/d+/(d+)_([da-f]+));

A première vue, je dirais que $id pourrait ne pas être initialisé
si la regexp ne match pas.
Exemple plus simple:
#! /usr/bin/perl
use strict;
use warnings;
#my $img = "toto";
my $img = "1234";
my $user = "blah";
my ($id) = ($img =~ /d+/);
my ($page) = "https://www.flickr.com/photos/$user/$id/";
print $page, "n";
Nicolas George
Le #26519853
Marc SCHAEFER , dans le message écrit :
In fr.comp.lang.perl Jo Engo
my ($id) = ($img =~ m@/d+/(d+)_([da-f]+));

A première vue, je dirais que $id pourrait ne pas être initialisé
si la regexp ne match pas.

Exactement.
Sergio
Le #26519856
Le 22/06/2019 à 22:03, Jo Engo a écrit :
Bonjour,
Je tente de débugger webcollage de xscreensaver, c'est du perl, car il me
sort l'erreur suivante :
Use of uninitialized value $id in concatenation (.) or string at /usr/lib/
xscreensaver/webcollage line 2159.
or voici les lignes 2158 et 2159 :
my ($id) = ($img =~ m@/d+/(d+)_([da-f]+));
my ($page) = "https://www.flickr.com/photos/$user/$id/";
$id me semble bel et bien être initialisé, non ??

Peut-être faut-il échapper le . ?
my ($page) = "https://www.flickr.com/photos/$user/$id/";
--
Serge http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Jo Engo
Le #26519859
Le Sat, 22 Jun 2019 23:33:34 +0200, Marc SCHAEFER a écrit :
A première vue, je dirais que $id pourrait ne pas être initialisé si la
regexp ne match pas.

Ça doit être ça, je n'ai plus qu'à travailler autour, mais comment ?
Serait-ce flickr qui a changé la forme de ses uri ?

--
Une hésitation, quelle qu'elle soit, est un signe de décrépitude
mentale chez les jeunes et de faiblesse physique chez les vieux.
-+- Oscar Wilde -+-
Marc SCHAEFER
Le #26519865
Sergio
Peut-être faut-il échapper le . ?
my ($page) = "https://www.flickr.com/photos/$user/$id/";

Non, car $page n'est pas une regexp; si $page était ensuite
utilisée comme regexp il y aurait certainement plein d'échappements
à faire.
Et d'ailleurs en Perl:
my $page = "bla.truc";
est égal à
my $page = "bla.truc";
" interpole plus de choses que '
PS: dans le code initial, je me suis demandé d'ailleurs pourquoi
toutes ces parenthèses autour des variables: seule effectivement
la première variable est définie avec une expression de type
liste, donc il faut my ($id), mais on pourrait certainement
aussi enlever la liste dans l'expression.
espie
Le #26519977
In article Marc SCHAEFER
Sergio
Peut-être faut-il échapper le . ?
my ($page) = "https://www.flickr.com/photos/$user/$id/";

Non, car $page n'est pas une regexp; si $page était ensuite
utilisée comme regexp il y aurait certainement plein d'échappements
à faire.
Et d'ailleurs en Perl:
my $page = "bla.truc";
est égal à
my $page = "bla.truc";
" interpole plus de choses que '
PS: dans le code initial, je me suis demandé d'ailleurs pourquoi
toutes ces parenthèses autour des variables: seule effectivement
la première variable est définie avec une expression de type
liste, donc il faut my ($id), mais on pourrait certainement
aussi enlever la liste dans l'expression.


Non, tu ne peux pas. Il faut une liste si tu veux recuperer les matchs
explicitement.
Si c'est un scalaire, tu auras juste le fait que ca matche ou pas.
espie
Le #26519976
In article Jo Engo
Bonjour,
Je tente de débugger webcollage de xscreensaver, c'est du perl, car il me
sort l'erreur suivante :
Use of uninitialized value $id in concatenation (.) or string at /usr/lib/
xscreensaver/webcollage line 2159.
or voici les lignes 2158 et 2159 :
my ($id) = ($img =~ m@/d+/(d+)_([da-f]+));

Bon, cette ligne regarde si $img contient un truc qui ressemble a ca
/<des chiffres>/<des chiffres a garder>_<des chiffres hexa>_
et va te stocker le resultat dans id.
C'est assez moche, surtout vu qu'on a une 2e expression avec parentheses
qui ne sert a rien.
Faudrait au moins tester que ce bout correspond a qq chose.
my $id;
unless (($id) = ($img =~ m@/d+/(d+)_([da-f]+))) {
print STDERR "$img doesn't match regexpn";
}
Jo Engo
Le #26519983
Le Mon, 24 Jun 2019 17:52:53 +0000, Marc Espie a écrit :
my $id;
unless (($id) = ($img =~ m@/d+/(d+)_([da-f]+))) {
print STDERR "$img doesn't match regexpn";

ok, mais ça changera juste le message d'erreur ^^ à mon avis c'est flickr
qui a changé la construction de ses uri d'où pas de match.

--
Le vrai moyen d'être trompé, c'est de se croire plus fin que les autres.
-+- François de La Rochefoucauld (1613-1680), Maximes 127 -+-
Jo Engo
Le #26519985
Le Mon, 24 Jun 2019 17:52:53 +0000, Marc Espie a écrit :
Faudrait au moins tester que ce bout correspond a qq chose.
my $id;
unless (($id) = ($img =~ m@/d+/(d+)_([da-f]+))) {
print STDERR "$img doesn't match regexpn";
}


banco :
http:// ne matche pas la regesp
il faut que je trouve où $img est initialisé :)
--
L'amour ôte l'esprit à ceux qui en ont et en donne à ceux qui n'en ont
pas.
-+- Denis Diderot -+-
Nicolas George
Le #26519984
Jo Engo , dans le message
http:// ne matche pas la regesp

Au pif, https?:// devrait débloquer la situation.
Publicité
Poster une réponse
Anonyme