Avatar billede perh Juniormester
01. november 2019 - 16:39 Der er 1 kommentar og
1 løsning

Perl defined() duer ikke

Jeg har et perl-script, som indeholder udtrykket:

if (!defined(%Form)) { &error('bad_referer') }

det har virket fint på den gamle server, men jeg har nu flyttet det til en ny server, hvor error_log er så venlig at fortælle mig:
"Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) at /var/www/vhosts/xxx/httpdocs/cgi-bin/mitscript.pl line 239. "

Det gjorde jeg så og så kører det, men der skulle jo gerne evalueres.

Jeg mener den gamle server kørte mod_perl
den nye med PHP7... har ikke andet perl end
PCRE (Perl Compatible Regular Expressions) Support    enabled
PCRE Library Version    8.41 2017-07-05

Er der et andet udtryk som gør det samme som "defined()" og kan det være %Form, som skal deklareres?
Avatar billede erikjacobsen Ekspert
02. november 2019 - 09:42 #1
Din konstruktion med defined fra "gammel" perl er identisk med

    if ( ! %Form ) { &error('bad_referer') }

I begge tilfælde kontrolleres om der en hash med navnet %Form.
Avatar billede perh Juniormester
02. november 2019 - 10:44 #2
Tusind tak, det var lige det, der skulle til.
Nu kører det igen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester