G'day techgrrl,
Welcome to the monastery.
Perl is reading up to the statement terminator (semicolon) on line 92 before deciding that it's found a disallowed bareword. The fact that line 92 also contains KNOWN_HOSTS is something of a red herring. Consider:
$ perl -Mstrict -E '
while (KNOWN_HOSTS) {
say "Hello";
last;
}
close KNOWN_HOSTS;
'
Bareword "KNOWN_HOSTS" not allowed while "strict subs" in use at -e li
+ne 6.
Execution of -e aborted due to compilation errors.
versus
$ perl -Mstrict -E '
while (KNOWN_HOSTS) {
say "Hello";
last;
}
say "Bye";
'
Bareword "KNOWN_HOSTS" not allowed while "strict subs" in use at -e li
+ne 6.
Execution of -e aborted due to compilation errors.
Where code extends over multiple lines, Perl will typically report an error at the end of the multi-line code. You need to bear this in mind when debugging - you can have instances where you need to backtrack many lines to find the line where the actual problem has occurred.
If you're wondering why Perl didn't see the closing brace as the end of the statement, consider:
$ perl -Mstrict -E '
while (KNOWN_HOSTS) {
say "Hello";
last;
}
continue {
1;
}
'
Bareword "KNOWN_HOSTS" not allowed while "strict subs" in use at -e li
+ne 8.
Execution of -e aborted due to compilation errors.
Aside: where you used perl -MO=Deparse -p ... above, I'm wondering if you meant perl -MO=Deparse,-p ..., i.e. s/ -p/,-p/.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.