Difference between revisions of "Coding Gotchas"
m (moved Gotchas to Coding Gotchas: fey says so) |
Foxfirefey (Talk | contribs) |
||
Line 1: | Line 1: | ||
− | This page | + | This page documents coding "gotchas" where things might not turn out how you expect them to. |
− | == | + | == Dreamwidth specific gotchas == |
=== LJ::Entry->new always returns an LJ::Entry (DW) === | === LJ::Entry->new always returns an LJ::Entry (DW) === | ||
Line 24: | Line 24: | ||
Entry 2 is valid | Entry 2 is valid | ||
</source> | </source> | ||
+ | |||
+ | == General Perl gotchas == | ||
=== You can modify ... === | === You can modify ... === | ||
Line 52: | Line 54: | ||
my $x = -1 if 0; # intentional false, for example. | my $x = -1 if 0; # intentional false, for example. | ||
− | $x = 1; # This accesses a *global, | + | $x = 1; # This accesses a *global, persistent across requests* $x |
</source> | </source> | ||
Revision as of 20:49, 8 March 2011
This page documents coding "gotchas" where things might not turn out how you expect them to.
Contents
Dreamwidth specific gotchas
LJ::Entry->new always returns an LJ::Entry (DW)
my $entry = LJ::Entry->new( $u, ditemid => $deleted_ditemid ); print "Entry 1 is defined\n" if defined $entry; print "Entry 1 is valid\n" if defined $entry->valid; $entry = LJ::Entry->new( $u, ditemid => $valid_ditemid ); print "Entry 2 is defined\n" if defined $entry; print "Entry 2 is valid\n" if defined $entry->valid;
Returns
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, s2, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
Entry 1 is defined Entry 2 is defined Entry 2 is valid
General Perl gotchas
You can modify ...
use strict; my $x; print "x is '$x'\n"; foo($x); print "x is now '$x'\n"; sub foo { $_[0] = "bar"; }
Returns
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, s2, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
x is '' x is now 'bar'
use strict + my $foo if
use strict; my $x = -1 if 0; # intentional false, for example. $x = 1; # This accesses a *global, persistent across requests* $x
The condition can be anything, and this bug only happens if the "my $x" line does not execute because of the condition, if the condition is true then it will end up using the local as expected.
strict does not complain about this.
Do the following instead:
use strict; my $x; $x = -1 if 0; $x = 1;