Kurso de Raku / Esencoj / Bazoj de la regofluo / Kondiĉaj kontroloj / Komparante ĉenojn

Kvizo 2 — la kondiĉo en if

Korektu la programon kaj respondu la demandon.

.my $password = prompt 'Enigu vian pasvorton: ';
.
eq =if $password ␣␣ '*&(#&$#Y' {
.    say 'Ĝusta';
.}
.else {
.    say 'Malĝusta';
.}

Kun la = en la testo, kion faras ĉi tiu programo?

Ĉiam presas 'Ĝusta'Via respondo:  (: Ĉiam presas 'Ĝusta', Ĉiam presas 'Malĝusta', Presas 'Ĝusta' por ĝustaj pasvortoj kaj 'Malĝusta' por malĝustaj, Presas 'Malĝusta' por ĝustaj pasvortoj kaj 'Ĝusta' por malĝustaj :)
La programo ĉiam presas ‘Ĝusta’ ĉar $password = ’*&(#&$#Y’ estas asigno kiu agordas la novan valoron de la variablo $password. Ĉar la valoro ne estas nulo nek malplena ŝnuro, ĝi estas konsiderata Vera. La pasvorto, kiun la uzanto enigas, neniam estas kontrolita en ĉi tiu kazo.

Se vi tajpas ==, tiam la programo rompiĝos ĉar ĝi provas konverti la ŝnurojn (la uzanta pasvorto kaj la ĝusta pasvorto) al nombroj kaj malsukcesas.

Kursa navigado

Kvizo 1 — Kompari ĉenojn   |   Ternara operatoro