Shlomi Fish avatar Shlomi Fish committed 36301e5

Cleanups and formattings.

Comments (0)

Files changed (1)

lib/retrieved-html-parts/Freenode_Sharp_Perl_FAQ.html

 <ul>
 <li class="toclevel-1"><a href="#Commonly_Asked_Questions"><span class="tocnumber">1</span> <span class="toctext">Commonly Asked Questions</span></a><ul>
 <li class="toclevel-2"><a href="#What_are_the_Rules_of_Conduct.3F"><span class="tocnumber">1.1</span> <span class="toctext">What are the Rules of Conduct?</span></a><ul>
-<li class="toclevel-3"><a href="#Handling_criticism"><span class="tocnumber">1.1.1</span> <span class="toctext">Handling criticism</span></a></li>
-<li class="toclevel-3"><a href="#English_usage"><span class="tocnumber">1.1.2</span> <span class="toctext">English usage</span></a></li></ul></li>
-<li class="toclevel-2"><a href="#I.27ve_become_an_Operator._What_should_I_do_now.3F"><span class="tocnumber">1.2</span> <span class="toctext">I&apos;ve become an Operator. What should I do now?</span></a></li>
-<li class="toclevel-2"><a href="#What_do_I_need_to_do_to_get_a_good_answer_to_my_question.3F"><span class="tocnumber">1.3</span> <span class="toctext">What do I need to do to get a good answer to my question?</span></a></li>
+<li class="toclevel-3"><a href="#Handling_criticism"><span class="tocnumber">1.1.1</span> <span class="toctext">Handling criticism</span></a>
+</li>
+<li class="toclevel-3"><a href="#English_usage"><span class="tocnumber">1.1.2</span> <span class="toctext">English usage</span></a>
+</li></ul>
+</li>
+<li class="toclevel-2"><a href="#I.27ve_become_an_Operator._What_should_I_do_now.3F"><span class="tocnumber">1.2</span> <span class="toctext">I&apos;ve become an Operator. What should I do now?</span></a>
+</li>
+<li class="toclevel-2"><a href="#What_do_I_need_to_do_to_get_a_good_answer_to_my_question.3F"><span class="tocnumber">1.3</span> <span class="toctext">What do I need to do to get a good answer to my question?</span></a>
+</li>
 <li class="toclevel-2"><a href="#What_is_Considered_On-Topic.3F"><span class="tocnumber">1.4</span> <span class="toctext">What is Considered On-Topic?</span></a><ul>
-<li class="toclevel-3"><a href="#Perl_Includes_CPAN"><span class="tocnumber">1.4.1</span> <span class="toctext">Perl Includes CPAN</span></a></li></ul></li>
-<li class="toclevel-2"><a href="#Is_the_Channel_Logged"><span class="tocnumber">1.4.2</span> <span class="toctext">Is the Channel Logged? Where can I find Logs?</span></a></li>
-<li class="toclevel-2"><a href="#I_need_help_with_tweaking_a_Perl_script_that_I_found.2C_and_I_don.27t_want_to_learn_Perl._Can_you_guys_help_me.3F"><span class="tocnumber">1.5</span> <span class="toctext">I need help with tweaking a Perl script that I found, and I don&apos;t want to learn Perl. Can you guys help me?</span></a></li>
-<li class="toclevel-2"><a href="#I.27d_like_to_run_a_script_.28which_I_wrote_or_downloaded.29_on_a_cheap_.28or_free.29_web-hosting_that_only_gives_me_FTP._Can_you_help.3F"><span class="tocnumber">1.6</span> <span class="toctext">I&apos;d like to run a script (which I wrote or downloaded) on a cheap (or free) web-hosting that only gives me FTP. Can you help?</span></a></li>
-<li class="toclevel-2"><a href="#I_need_help_with_a_non-Perl_Regular_Expression_.28PHP.2C_grep.2C_PCRE.2C_etc..29"><span class="tocnumber">1.7</span> <span class="toctext">I need help with a non-Perl Regular Expression (PHP, grep, PCRE, etc.)</span></a></li>
-<li class="toclevel-2"><a href="#Can_you_recommend_a_good_Perl_Editor.2FIDE.3F"><span class="tocnumber">1.8</span> <span class="toctext">Can you recommend a good Perl Editor/IDE?</span></a></li>
-<li class="toclevel-2"><a href="#Why_doesn.27t_my_script_run.3F"><span class="tocnumber">1.9</span> <span class="toctext">Why doesn&apos;t my script run?</span></a></li>
-<li class="toclevel-2"><a href="#Why_doesn.27t_my_script_work.3F"><span class="tocnumber">1.10</span> <span class="toctext">Why doesn&apos;t my script work?</span></a></li>
-<li class="toclevel-2"><a href="#How_should_I_write_my_code.3F"><span class="tocnumber">1.11</span> <span class="toctext">How should I write my code?</span></a></li>
-<li class="toclevel-2"><a href="#I_need_to_parse_HTML_with_Perl_.28and_my_Regular_Expression_does_not_work.29"><span class="tocnumber">1.12</span> <span class="toctext">I need to parse HTML with Perl (and my Regular Expression does not work)</span></a></li>
-<li class="toclevel-2"><a href="#Can_I_write_Graphical_User-Interfaces_.28GUIs.29_in_Perl.3F_And_How.3F"><span class="tocnumber">1.13</span> <span class="toctext">Can I write Graphical User-Interfaces (GUIs) in Perl? And How?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_break.2Fskip_an_outer_loop.3F"><span class="tocnumber">1.14</span> <span class="toctext">How can I break/skip an outer loop?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_include_a_script_into_a_different_script_and_still_see_the_lexical_.28.22my.22.29_variables_declared_there.3F"><span class="tocnumber">1.15</span> <span class="toctext">How can I include a script into a different script and still see the lexical (&quot;my&quot;) variables declared there?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_format_numbers_with_certain_digits.3F"><span class="tocnumber">1.16</span> <span class="toctext">How can I format numbers with certain digits?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_have_printf_return_a_value_instead_of_outputting_to_a_filehandle.3F"><span class="tocnumber">1.17</span> <span class="toctext">How can I have printf return a value instead of outputting to a filehandle?</span></a></li>
-<li class="toclevel-2"><a href="#Where_else_can_I_go_for_help.3F"><span class="tocnumber">1.18</span> <span class="toctext">Where else can I go for help?</span></a></li>
-<li class="toclevel-2"><a href="#How_do_I_know_the_index_of_the_element_in_a_foreach_loop.3F"><span class="tocnumber">1.19</span> <span class="toctext">How do I know the index of the element in a foreach loop?</span></a></li>
-<li class="toclevel-2"><a href="#Is_there_anyway_to_compile_Perl_code_to_an_executable.3F"><span class="tocnumber">1.20</span> <span class="toctext">Is there anyway to compile Perl code to an executable?</span></a></li>
-<li class="toclevel-2"><a href="#How_do_I_perform_operations_on_entire_directories_.28delete_them.2C_copy_them.2C_etc..29.3F"><span class="tocnumber">1.21</span> <span class="toctext">How do I perform operations on entire directories (delete them, copy them, etc.)?</span></a></li>
-<li class="toclevel-2"><a href="#I_want_to_run_a_shell_command_from_Perl.2C_and_possibly_trap_its_output._How.3F"><span class="tocnumber">1.22</span> <span class="toctext">I want to run a shell command from Perl, and possibly trap its output. How?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_Merge_Two_Hashes.3F"><span class="tocnumber">1.23</span> <span class="toctext">How can I Merge Two Hashes?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_match_anything-except-a-regex_inside_a_Perl_regular_expression.3F"><span class="tocnumber">1.24</span> <span class="toctext">How can I match anything-except-a-regex inside a Perl regular expression?</span></a></li>
-<li class="toclevel-2"><a href="#Should_I_learn_Perl.3F_Should_I_learn_it_as_well_as_Python.2FRuby.2FPHP.2Fwhatever.3F"><span class="tocnumber">1.25</span> <span class="toctext">Should I learn Perl? Should I learn it as well as Python/Ruby/PHP/whatever?</span></a></li>
-<li class="toclevel-2"><a href="#Is_Perl_better_than_PHP.2C_Python.2C_Ruby.2C_etc..3F"><span class="tocnumber">1.26</span> <span class="toctext">Is Perl better than PHP, Python, Ruby, etc.?</span></a></li>
-<li class="toclevel-2"><a href="#Which_method_to_do_.24TASK_X_is_faster.3F_How_can_I_optimise_my_Perl_programs.3F"><span class="tocnumber">1.27</span> <span class="toctext">Which method to do $TASK_X is faster? How can I optimise my Perl programs?</span></a></li>
-<li class="toclevel-2"><a href="#Oh_no.21_CPAN_won.27t_use_the_packages_it_has_downloaded.21__It_says_the_checksums_are_invalid.21"><span class="tocnumber">1.28</span> <span class="toctext">Oh no! CPAN won&apos;t use the packages it has downloaded! It says the checksums are invalid!</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_search_for_a_value_inside_an_array.3F"><span class="tocnumber">1.29</span> <span class="toctext">How can I search for a value inside an array?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_prepare_a_self-contained_Perl_executable.3F"><span class="tocnumber">1.30</span> <span class="toctext">How can I prepare a self-contained Perl executable?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_compile_my_code_to_obscure_.2F_obfuscate_the_source.3F"><span class="tocnumber">1.31</span> <span class="toctext">How can I compile my code to obscure / obfuscate the source?</span></a></li>
-<li class="toclevel-2"><a href="#When_is_Perl_6_going_to_be_ready.3F"><span class="tocnumber">1.32</span> <span class="toctext">When is Perl 6 going to be ready?</span></a></li>
-<li class="toclevel-2"><a href="#Perl_6_is_going_to_be_so_different_from_Perl_5._Should_I_still_learn_Perl_5.3F"><span class="tocnumber">1.33</span> <span class="toctext">Perl 6 is going to be so different from Perl 5. Should I still learn Perl 5?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_match_a_string_variable_inside_a_regex.3F"><span class="tocnumber">1.34</span> <span class="toctext">How can I match a string variable inside a regex?</span></a></li>
-<li class="toclevel-2"><a href="#Where_can_I_find_lists_of_Programming_Challenges.3F"><span class="tocnumber">1.35</span> <span class="toctext">Where can I find lists of Programming Challenges?</span></a></li>
-<li class="toclevel-2"><a href="#Where_can_I_find_an_interactive_version_of_Perl.3F_.28a.k.a_a_REPL_-_Read-Eval-Print-Loop.29"><span class="tocnumber">1.36</span> <span class="toctext">Where can I find an interactive version of Perl? (a.k.a a REPL - Read-Eval-Print-Loop)</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_store_Perl_Data_Structures_on_the_Hard_Disk.3F"><span class="tocnumber">1.37</span> <span class="toctext">How can I store Perl Data Structures on the Hard Disk?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_do_a_switch_statement_in_Perl.3F"><span class="tocnumber">1.38</span> <span class="toctext">How can I do a switch statement in Perl?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_determine_the_type_of_a_reference_.28array.2C_hash.2C_scalar.2C_etc..29.3F"><span class="tocnumber">1.39</span> <span class="toctext">How can I determine the type of a reference (array, hash, scalar, etc.)?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_parse_a_CSV_.28Comma_separated_value_.2F_comma_delimited_value.29_file.3F"><span class="tocnumber">1.40</span> <span class="toctext">How can I parse a CSV (Comma separated value / comma delimited value) file?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_access_the_global_variables_in_my_script_from_a_different_module_and.2For_namespace"><span class="tocnumber">1.41</span> <span class="toctext">How can I access the global variables in my script from a different module and/or namespace</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_set_up_a_timeout_for_a_blocking_operation.3F"><span class="tocnumber">1.42</span> <span class="toctext">How can I set up a timeout for a blocking operation?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_match_.28and_possibly_replace.29_the_Nth_expression_out_of_a_string.3F"><span class="tocnumber">1.43</span> <span class="toctext">How can I match (and possibly replace) the Nth expression out of a string?</span></a></li>
-<li class="toclevel-2"><a href="#How_do_I_prepend_data_to_a_file.2C_take_out.2Fdelete_data_from_the_middle_of_the_file_or_insert_data_into_the_middle_of_the_file.3F"><span class="tocnumber">1.44</span> <span class="toctext">How do I prepend data to a file, take out/delete data from the middle of the file or insert data into the middle of the file?</span></a></li>
-<li class="toclevel-2"><a href="#How_do_I_pass_a_reference_to_an_object.27s_method.3F_.28Also_known_as_class_subroutine_or_member_function.29"><span class="tocnumber">1.45</span> <span class="toctext">How do I pass a reference to an object&apos;s method? (Also known as class subroutine or member function)</span></a></li>
-<li class="toclevel-2"><a href="#How_do_I_trim_leading_and.2For_trailing_whitespace_from_a_string.3F"><span class="tocnumber">1.46</span> <span class="toctext">How do I trim leading and/or trailing whitespace from a string?</span></a></li>
-<li class="toclevel-2"><a href="#How_do_I_add_directories_to_the_list_of_paths_where_Perl_searches_for_modules.3F_.28.40INC.29"><span class="tocnumber">1.47</span> <span class="toctext">How do I add directories to the list of paths where Perl searches for modules? (@INC)</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_get_perl_to_print_each_line_as_it_is_executed_.28similar_to_the_shell.27s_-x_flag.29.3F"><span class="tocnumber">1.48</span> <span class="toctext">How can I get perl to print each line as it is executed (similar to the shell&apos;s -x flag)?</span></a></li>
-<li class="toclevel-2"><a href="#I.27m_trying_to_use_threads_to_speed_up_my_program._What_should_I_know.3F"><span class="tocnumber">1.49</span> <span class="toctext">I&apos;m trying to use threads to speed up my program. What should I know?</span></a></li>
-<li class="toclevel-2"><a href="#Should_I_be_using_mod_perl.3F"><span class="tocnumber">1.50</span> <span class="toctext">Should I be using mod_perl?</span></a></li>
-<li class="toclevel-2"><a href="#How_can_I_find_which_modules_a_Perl_program_or_module_depends_on.3F"><span class="tocnumber">1.51</span> <span class="toctext">How can I find which modules a Perl program or module depends on?</span></a></li>
-<li class="toclevel-2"><a href="#randomise-array"><span class="tocnumber">1.52</span> <span class="toctext">How can I randomise an array? E.g: pick a random element or shuffle it?</span></a></li>
-<li class="toclevel-2"><a href="#array-vs-array-ref"><span class="tocnumber">1.53</span> <span class="toctext">What is the difference between an array and an array reference? What about a hash vs. a hash reference?</span></a></li>
+<li class="toclevel-3"><a href="#Perl_Includes_CPAN"><span class="tocnumber">1.4.1</span> <span class="toctext">Perl Includes CPAN</span></a>
+</li></ul>
+</li>
+<li class="toclevel-2"><a href="#Is_the_Channel_Logged"><span class="tocnumber">1.4.2</span> <span class="toctext">Is the Channel Logged? Where can I find Logs?</span></a>
+</li>
+<li class="toclevel-2"><a href="#I_need_help_with_tweaking_a_Perl_script_that_I_found.2C_and_I_don.27t_want_to_learn_Perl._Can_you_guys_help_me.3F"><span class="tocnumber">1.5</span> <span class="toctext">I need help with tweaking a Perl script that I found, and I don&apos;t want to learn Perl. Can you guys help me?</span></a>
+</li>
+<li class="toclevel-2"><a href="#I.27d_like_to_run_a_script_.28which_I_wrote_or_downloaded.29_on_a_cheap_.28or_free.29_web-hosting_that_only_gives_me_FTP._Can_you_help.3F"><span class="tocnumber">1.6</span> <span class="toctext">I&apos;d like to run a script (which I wrote or downloaded) on a cheap (or free) web-hosting that only gives me FTP. Can you help?</span></a>
+</li>
+<li class="toclevel-2"><a href="#I_need_help_with_a_non-Perl_Regular_Expression_.28PHP.2C_grep.2C_PCRE.2C_etc..29"><span class="tocnumber">1.7</span> <span class="toctext">I need help with a non-Perl Regular Expression (PHP, grep, PCRE, etc.)</span></a>
+</li>
+<li class="toclevel-2"><a href="#Can_you_recommend_a_good_Perl_Editor.2FIDE.3F"><span class="tocnumber">1.8</span> <span class="toctext">Can you recommend a good Perl Editor/IDE?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Why_doesn.27t_my_script_run.3F"><span class="tocnumber">1.9</span> <span class="toctext">Why doesn&apos;t my script run?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Why_doesn.27t_my_script_work.3F"><span class="tocnumber">1.10</span> <span class="toctext">Why doesn&apos;t my script work?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_should_I_write_my_code.3F"><span class="tocnumber">1.11</span> <span class="toctext">How should I write my code?</span></a>
+</li>
+<li class="toclevel-2"><a href="#I_need_to_parse_HTML_with_Perl_.28and_my_Regular_Expression_does_not_work.29"><span class="tocnumber">1.12</span> <span class="toctext">I need to parse HTML with Perl (and my Regular Expression does not work)</span></a>
+</li>
+<li class="toclevel-2"><a href="#Can_I_write_Graphical_User-Interfaces_.28GUIs.29_in_Perl.3F_And_How.3F"><span class="tocnumber">1.13</span> <span class="toctext">Can I write Graphical User-Interfaces (GUIs) in Perl? And How?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_break.2Fskip_an_outer_loop.3F"><span class="tocnumber">1.14</span> <span class="toctext">How can I break/skip an outer loop?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_include_a_script_into_a_different_script_and_still_see_the_lexical_.28.22my.22.29_variables_declared_there.3F"><span class="tocnumber">1.15</span> <span class="toctext">How can I include a script into a different script and still see the lexical (&quot;my&quot;) variables declared there?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_format_numbers_with_certain_digits.3F"><span class="tocnumber">1.16</span> <span class="toctext">How can I format numbers with certain digits?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_have_printf_return_a_value_instead_of_outputting_to_a_filehandle.3F"><span class="tocnumber">1.17</span> <span class="toctext">How can I have printf return a value instead of outputting to a filehandle?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Where_else_can_I_go_for_help.3F"><span class="tocnumber">1.18</span> <span class="toctext">Where else can I go for help?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_do_I_know_the_index_of_the_element_in_a_foreach_loop.3F"><span class="tocnumber">1.19</span> <span class="toctext">How do I know the index of the element in a foreach loop?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Is_there_anyway_to_compile_Perl_code_to_an_executable.3F"><span class="tocnumber">1.20</span> <span class="toctext">Is there anyway to compile Perl code to an executable?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_do_I_perform_operations_on_entire_directories_.28delete_them.2C_copy_them.2C_etc..29.3F"><span class="tocnumber">1.21</span> <span class="toctext">How do I perform operations on entire directories (delete them, copy them, etc.)?</span></a>
+</li>
+<li class="toclevel-2"><a href="#I_want_to_run_a_shell_command_from_Perl.2C_and_possibly_trap_its_output._How.3F"><span class="tocnumber">1.22</span> <span class="toctext">I want to run a shell command from Perl, and possibly trap its output. How?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_Merge_Two_Hashes.3F"><span class="tocnumber">1.23</span> <span class="toctext">How can I Merge Two Hashes?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_match_anything-except-a-regex_inside_a_Perl_regular_expression.3F"><span class="tocnumber">1.24</span> <span class="toctext">How can I match anything-except-a-regex inside a Perl regular expression?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Should_I_learn_Perl.3F_Should_I_learn_it_as_well_as_Python.2FRuby.2FPHP.2Fwhatever.3F"><span class="tocnumber">1.25</span> <span class="toctext">Should I learn Perl? Should I learn it as well as Python/Ruby/PHP/whatever?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Is_Perl_better_than_PHP.2C_Python.2C_Ruby.2C_etc..3F"><span class="tocnumber">1.26</span> <span class="toctext">Is Perl better than PHP, Python, Ruby, etc.?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Which_method_to_do_.24TASK_X_is_faster.3F_How_can_I_optimise_my_Perl_programs.3F"><span class="tocnumber">1.27</span> <span class="toctext">Which method to do $TASK_X is faster? How can I optimise my Perl programs?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Oh_no.21_CPAN_won.27t_use_the_packages_it_has_downloaded.21__It_says_the_checksums_are_invalid.21"><span class="tocnumber">1.28</span> <span class="toctext">Oh no! CPAN won&apos;t use the packages it has downloaded! It says the checksums are invalid!</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_search_for_a_value_inside_an_array.3F"><span class="tocnumber">1.29</span> <span class="toctext">How can I search for a value inside an array?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_prepare_a_self-contained_Perl_executable.3F"><span class="tocnumber">1.30</span> <span class="toctext">How can I prepare a self-contained Perl executable?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_compile_my_code_to_obscure_.2F_obfuscate_the_source.3F"><span class="tocnumber">1.31</span> <span class="toctext">How can I compile my code to obscure / obfuscate the source?</span></a>
+</li>
+<li class="toclevel-2"><a href="#When_is_Perl_6_going_to_be_ready.3F"><span class="tocnumber">1.32</span> <span class="toctext">When is Perl 6 going to be ready?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Perl_6_is_going_to_be_so_different_from_Perl_5._Should_I_still_learn_Perl_5.3F"><span class="tocnumber">1.33</span> <span class="toctext">Perl 6 is going to be so different from Perl 5. Should I still learn Perl 5?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_match_a_string_variable_inside_a_regex.3F"><span class="tocnumber">1.34</span> <span class="toctext">How can I match a string variable inside a regex?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Where_can_I_find_lists_of_Programming_Challenges.3F"><span class="tocnumber">1.35</span> <span class="toctext">Where can I find lists of Programming Challenges?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Where_can_I_find_an_interactive_version_of_Perl.3F_.28a.k.a_a_REPL_-_Read-Eval-Print-Loop.29"><span class="tocnumber">1.36</span> <span class="toctext">Where can I find an interactive version of Perl? (a.k.a a REPL - Read-Eval-Print-Loop)</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_store_Perl_Data_Structures_on_the_Hard_Disk.3F"><span class="tocnumber">1.37</span> <span class="toctext">How can I store Perl Data Structures on the Hard Disk?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_do_a_switch_statement_in_Perl.3F"><span class="tocnumber">1.38</span> <span class="toctext">How can I do a switch statement in Perl?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_determine_the_type_of_a_reference_.28array.2C_hash.2C_scalar.2C_etc..29.3F"><span class="tocnumber">1.39</span> <span class="toctext">How can I determine the type of a reference (array, hash, scalar, etc.)?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_parse_a_CSV_.28Comma_separated_value_.2F_comma_delimited_value.29_file.3F"><span class="tocnumber">1.40</span> <span class="toctext">How can I parse a CSV (Comma separated value / comma delimited value) file?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_access_the_global_variables_in_my_script_from_a_different_module_and.2For_namespace"><span class="tocnumber">1.41</span> <span class="toctext">How can I access the global variables in my script from a different module and/or namespace</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_set_up_a_timeout_for_a_blocking_operation.3F"><span class="tocnumber">1.42</span> <span class="toctext">How can I set up a timeout for a blocking operation?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_match_.28and_possibly_replace.29_the_Nth_expression_out_of_a_string.3F"><span class="tocnumber">1.43</span> <span class="toctext">How can I match (and possibly replace) the Nth expression out of a string?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_do_I_prepend_data_to_a_file.2C_take_out.2Fdelete_data_from_the_middle_of_the_file_or_insert_data_into_the_middle_of_the_file.3F"><span class="tocnumber">1.44</span> <span class="toctext">How do I prepend data to a file, take out/delete data from the middle of the file or insert data into the middle of the file?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_do_I_pass_a_reference_to_an_object.27s_method.3F_.28Also_known_as_class_subroutine_or_member_function.29"><span class="tocnumber">1.45</span> <span class="toctext">How do I pass a reference to an object&apos;s method? (Also known as class subroutine or member function)</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_do_I_trim_leading_and.2For_trailing_whitespace_from_a_string.3F"><span class="tocnumber">1.46</span> <span class="toctext">How do I trim leading and/or trailing whitespace from a string?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_do_I_add_directories_to_the_list_of_paths_where_Perl_searches_for_modules.3F_.28.40INC.29"><span class="tocnumber">1.47</span> <span class="toctext">How do I add directories to the list of paths where Perl searches for modules? (@INC)</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_get_perl_to_print_each_line_as_it_is_executed_.28similar_to_the_shell.27s_-x_flag.29.3F"><span class="tocnumber">1.48</span> <span class="toctext">How can I get perl to print each line as it is executed (similar to the shell&apos;s -x flag)?</span></a>
+</li>
+<li class="toclevel-2"><a href="#I.27m_trying_to_use_threads_to_speed_up_my_program._What_should_I_know.3F"><span class="tocnumber">1.49</span> <span class="toctext">I&apos;m trying to use threads to speed up my program. What should I know?</span></a>
+</li>
+<li class="toclevel-2"><a href="#Should_I_be_using_mod_perl.3F"><span class="tocnumber">1.50</span> <span class="toctext">Should I be using mod_perl?</span></a>
+</li>
+<li class="toclevel-2"><a href="#How_can_I_find_which_modules_a_Perl_program_or_module_depends_on.3F"><span class="tocnumber">1.51</span> <span class="toctext">How can I find which modules a Perl program or module depends on?</span></a>
+</li>
+<li class="toclevel-2"><a href="#randomise-array"><span class="tocnumber">1.52</span> <span class="toctext">How can I randomise an array? E.g: pick a random element or shuffle it?</span></a>
+</li>
+<li class="toclevel-2"><a href="#array-vs-array-ref"><span class="tocnumber">1.53</span> <span class="toctext">What is the difference between an array and an array reference? What about a hash vs. a hash reference?</span></a>
+</li>
 
 </ul>
 </li>
 
 <li class="toclevel-1"><a href="#Some_Related_IRC_Channels_on_Freenode"><span class="tocnumber">2</span> <span class="toctext">Some Related IRC Channels on Freenode</span></a><ul>
-<li class="toclevel-2"><a href="#.23perlcafe"><span class="tocnumber">2.1</span> <span class="toctext">#perlcafe</span></a></li>
-<li class="toclevel-2"><a href="#.23perl6"><span class="tocnumber">2.2</span> <span class="toctext">#perl6</span></a></li>
-<li class="toclevel-2"><a href="#.23lispcafe"><span class="tocnumber">2.3</span> <span class="toctext">#lispcafe</span></a></li>
-<li class="toclevel-2"><a href="#.23perl-cats"><span class="tocnumber">2.4</span> <span class="toctext">#perl-cats</span></a></li></ul></li>
+<li class="toclevel-2"><a href="#.23perlcafe"><span class="tocnumber">2.1</span> <span class="toctext">#perlcafe</span></a>
+</li>
+<li class="toclevel-2"><a href="#.23perl6"><span class="tocnumber">2.2</span> <span class="toctext">#perl6</span></a>
+</li>
+<li class="toclevel-2"><a href="#.23lispcafe"><span class="tocnumber">2.3</span> <span class="toctext">#lispcafe</span></a>
+</li>
+<li class="toclevel-2"><a href="#.23perl-cats"><span class="tocnumber">2.4</span> <span class="toctext">#perl-cats</span></a>
+</li></ul>
+</li>
 <li class="toclevel-1"><a href="#People"><span class="tocnumber">3</span> <span class="toctext">People</span></a><ul>
 <li class="toclevel-2"><a href="#Channel_Owner"><span class="tocnumber">3.1</span> <span class="toctext">Channel Owner</span></a><ul>
-<li class="toclevel-3"><a href="#thrig"><span class="tocnumber">3.1.1</span> <span class="toctext">thrig</span></a></li></ul></li>
+<li class="toclevel-3"><a href="#thrig"><span class="tocnumber">3.1.1</span> <span class="toctext">thrig</span></a>
+</li></ul>
+</li>
 <li class="toclevel-2"><a href="#Channel_Operators"><span class="tocnumber">3.2</span> <span class="toctext">Channel Operators</span></a><ul>
-<li class="toclevel-3"><a href="#apeiron"><span class="tocnumber">3.2.1</span> <span class="toctext">apeiron</span></a></li>
-<li class="toclevel-3"><a href="#beth"><span class="tocnumber">3.2.2</span> <span class="toctext">beth</span></a></li>
-<li class="toclevel-3"><a href="#Chris62vw"><span class="tocnumber">3.2.3</span> <span class="toctext">Chris62vw</span></a></li>
-<li class="toclevel-3"><a href="#f00li5h"><span class="tocnumber">3.2.4</span> <span class="toctext">f00li5h</span></a></li>
-<li class="toclevel-3"><a href="#mst"><span class="tocnumber">3.2.5</span> <span class="toctext">mst</span></a></li>
-<li class="toclevel-3"><a href="#Paladin"><span class="tocnumber">3.2.6</span> <span class="toctext">Paladin</span></a></li>
-<li class="toclevel-3"><a href="#rindolf"><span class="tocnumber">3.2.7</span> <span class="toctext">rindolf</span></a></li>
-<li class="toclevel-3"><a href="#simcop2387"><span class="tocnumber">3.2.8</span> <span class="toctext">simcop2387</span></a></li></ul></li>
+<li class="toclevel-3"><a href="#apeiron"><span class="tocnumber">3.2.1</span> <span class="toctext">apeiron</span></a>
+</li>
+<li class="toclevel-3"><a href="#beth"><span class="tocnumber">3.2.2</span> <span class="toctext">beth</span></a>
+</li>
+<li class="toclevel-3"><a href="#Chris62vw"><span class="tocnumber">3.2.3</span> <span class="toctext">Chris62vw</span></a>
+</li>
+<li class="toclevel-3"><a href="#f00li5h"><span class="tocnumber">3.2.4</span> <span class="toctext">f00li5h</span></a>
+</li>
+<li class="toclevel-3"><a href="#mst"><span class="tocnumber">3.2.5</span> <span class="toctext">mst</span></a>
+</li>
+<li class="toclevel-3"><a href="#Paladin"><span class="tocnumber">3.2.6</span> <span class="toctext">Paladin</span></a>
+</li>
+<li class="toclevel-3"><a href="#rindolf"><span class="tocnumber">3.2.7</span> <span class="toctext">rindolf</span></a>
+</li>
+<li class="toclevel-3"><a href="#simcop2387"><span class="tocnumber">3.2.8</span> <span class="toctext">simcop2387</span></a>
+</li></ul>
+</li>
 <li class="toclevel-2"><a href="#Channel_Regulars"><span class="tocnumber">3.3</span> <span class="toctext">Channel Regulars</span></a><ul>
-<li class="toclevel-3"><a href="#ivantis.5B.5E3.5D.2A"><span class="tocnumber">3.3.1</span> <span class="toctext">ivantis[^3]*</span></a></li>
-<li class="toclevel-3"><a href="#alanhaggai"><span class="tocnumber">3.3.2</span> <span class="toctext">alanhaggai</span></a></li>
-<li class="toclevel-3"><a href="#dazjorz"><span class="tocnumber">3.3.3</span> <span class="toctext">dazjorz</span></a></li>
-<li class="toclevel-3"><a href="#pkrumins"><span class="tocnumber">3.3.4</span> <span class="toctext">pkrumins</span></a></li>
-<li class="toclevel-3"><a href="#whoppix"><span class="tocnumber">3.3.5</span> <span class="toctext">whoppix</span></a></li></ul></li>
+<li class="toclevel-3"><a href="#ivantis.5B.5E3.5D.2A"><span class="tocnumber">3.3.1</span> <span class="toctext">ivantis[^3]*</span></a>
+</li>
+<li class="toclevel-3"><a href="#alanhaggai"><span class="tocnumber">3.3.2</span> <span class="toctext">alanhaggai</span></a>
+</li>
+<li class="toclevel-3"><a href="#dazjorz"><span class="tocnumber">3.3.3</span> <span class="toctext">dazjorz</span></a>
+</li>
+<li class="toclevel-3"><a href="#pkrumins"><span class="tocnumber">3.3.4</span> <span class="toctext">pkrumins</span></a>
+</li>
+<li class="toclevel-3"><a href="#whoppix"><span class="tocnumber">3.3.5</span> <span class="toctext">whoppix</span></a>
+</li></ul>
+</li>
 <li class="toclevel-2"><a href="#Bots"><span class="tocnumber">3.4</span> <span class="toctext">Bots</span></a><ul>
-<li class="toclevel-3"><a href="#perlbot"><span class="tocnumber">3.4.1</span> <span class="toctext">perlbot</span></a></li>
-<li class="toclevel-3"><a href="#buubot"><span class="tocnumber">3.4.2</span> <span class="toctext">buubot</span></a></li>
-<li class="toclevel-3"><a href="#CPAN2"><span class="tocnumber">3.4.3</span> <span class="toctext">CPAN2</span></a></li>
-<li class="toclevel-3"><a href="#GumbyPAN"><span class="tocnumber">3.4.4</span> <span class="toctext">GumbyPAN</span></a></li>
-<li class="toclevel-3"><a href="#GumbyBRAIN"><span class="tocnumber">3.4.5</span> <span class="toctext">GumbyBRAIN</span></a></li>
-<li class="toclevel-3"><a href="#farnsworth"><span class="tocnumber">3.4.6</span> <span class="toctext">farnsworth</span></a></li>
-<li class="toclevel-3"><a href="#perlbot2"><span class="tocnumber">3.4.7</span> <span class="toctext">perlbot2</span></a></li>
-<li class="toclevel-3"><a href="#f00bot"><span class="tocnumber">3.4.8</span> <span class="toctext">f00bot</span></a></li>
-<li class="toclevel-3"><a href="#ivantis3.5B.60_.5D.2A"><span class="tocnumber">3.4.9</span> <span class="toctext">ivantis3[`_]*</span></a></li></ul></li></ul></li>
-<li class="toclevel-1"><a href="#Our_Milestone_Pictures"><span class="tocnumber">4</span> <span class="toctext">Our Milestone Pictures</span></a></li>
+<li class="toclevel-3"><a href="#perlbot"><span class="tocnumber">3.4.1</span> <span class="toctext">perlbot</span></a>
+</li>
+<li class="toclevel-3"><a href="#buubot"><span class="tocnumber">3.4.2</span> <span class="toctext">buubot</span></a>
+</li>
+<li class="toclevel-3"><a href="#CPAN2"><span class="tocnumber">3.4.3</span> <span class="toctext">CPAN2</span></a>
+</li>
+<li class="toclevel-3"><a href="#GumbyPAN"><span class="tocnumber">3.4.4</span> <span class="toctext">GumbyPAN</span></a>
+</li>
+<li class="toclevel-3"><a href="#GumbyBRAIN"><span class="tocnumber">3.4.5</span> <span class="toctext">GumbyBRAIN</span></a>
+</li>
+<li class="toclevel-3"><a href="#farnsworth"><span class="tocnumber">3.4.6</span> <span class="toctext">farnsworth</span></a>
+</li>
+<li class="toclevel-3"><a href="#perlbot2"><span class="tocnumber">3.4.7</span> <span class="toctext">perlbot2</span></a>
+</li>
+<li class="toclevel-3"><a href="#f00bot"><span class="tocnumber">3.4.8</span> <span class="toctext">f00bot</span></a>
+</li>
+<li class="toclevel-3"><a href="#ivantis3.5B.60_.5D.2A"><span class="tocnumber">3.4.9</span> <span class="toctext">ivantis3[`_]*</span></a>
+</li></ul>
+</li></ul>
+</li>
+<li class="toclevel-1"><a href="#Our_Milestone_Pictures"><span class="tocnumber">4</span> <span class="toctext">Our Milestone Pictures</span></a>
+</li>
 
 </ul>
 
 <h3 id="What_are_the_Rules_of_Conduct.3F"> What are the Rules of Conduct? </h3>
 
 <ol>
-<li> Don&apos;t flood the channel with your paste. Instead use a pastebot - type <tt>perlbot paste</tt>. </li>
-<li> Be civil and friendly. </li>
-<li> Try to use proper English spelling, grammar, syntax, and phrasing. This will help the channel members understand your questions more easily and thus allow them to provide better answers. </li>
-<li> Whenever someone helps you then: <ol>
-<li> Thank them! </li>
-<li> Bump their karma. For example if <tt>johndoe</tt> helps you then say <tt>johndoe++</tt>. </li></ol></li>
-<li> When addressing a channel member, start your message with their nickname followed by a colon (&quot;:&quot;). For example <tt>johndoe: I understand it now.</tt> Your IRC client may have an option to make this easier. Do not use forum/twitter-like notation of <tt>@nick</tt> because most clients will not highlight it specially. </li>
-<li> Do not private message (PM) a channel member using <tt>/msg</tt>, in order to ask a technical question, or to answer a question that they are asking you. This is considered rude, and you are preventing the other channel members from participating in the conversation and helping as well. </li>
-<li> Don&apos;t <b>overuse the evalbot</b> (<tt>eval: 5+6</tt>). The eval bot is primarily meant for experts to show working snippets of code to people who need help. It is not meant as your personal evaluator. If you still want to experiment then <tt>/join #perlbot</tt>. </li>
-<li> If someone needs too much help and handholding, please ask them to chat on one of the symbiont channels such as <tt>#perlcafe</tt> or <tt>#perl-cats</tt>. This will help increase the signal-to-noise ratio of #perl. </li></ol>
+<li> Don&apos;t flood the channel with your paste. Instead use a pastebot - type <tt>perlbot paste</tt>.
+</li>
+<li> Be civil and friendly.
+</li>
+<li> Try to use proper English spelling, grammar, syntax, and phrasing. This will help the channel members understand your questions more easily and thus allow them to provide better answers.
+</li>
+<li> Whenever someone helps you then:
+
+<ol>
+<li> Thank them!
+</li>
+<li> Bump their karma. For example if <tt>johndoe</tt> helps you then say <tt>johndoe++</tt>.
+</li></ol>
+</li>
+<li> When addressing a channel member, start your message with their nickname followed by a colon (&quot;:&quot;). For example <tt>johndoe: I understand it now.</tt> Your IRC client may have an option to make this easier. Do not use forum/twitter-like notation of <tt>@nick</tt> because most clients will not highlight it specially.
+</li>
+<li> Do not private message (PM) a channel member using <tt>/msg</tt>, in order to ask a technical question, or to answer a question that they are asking you. This is considered rude, and you are preventing the other channel members from participating in the conversation and helping as well.
+</li>
+<li> Don&apos;t <b>overuse the evalbot</b> (<tt>eval: 5+6</tt>). The eval bot is primarily meant for experts to show working snippets of code to people who need help. It is not meant as your personal evaluator. If you still want to experiment then <tt>/join #perlbot</tt>.
+</li>
+<li> If someone needs too much help and handholding, please ask them to chat on one of the symbiont channels such as <tt>#perlcafe</tt> or <tt>#perl-cats</tt>. This will help increase the signal-to-noise ratio of #perl.
+</li></ol>
 
 
 <h4 id="Handling_criticism"> Handling criticism </h4>
 </p>
 
 <h3 id="I.27ve_become_an_Operator._What_should_I_do_now.3F"> I&apos;ve become an Operator. What should I do now? </h3>
-<ol><li> Don&apos;t remain an operator for too long. Become an operator only to change the topic or to warn someone that he would be kicked if they continue with their abusive beahviour, or to ban an abusive person (see below). Use /msg ChanServ OP #perl $my_nick to become an operator, and de-op yourself using your IRC client to switch back and forth. </li><li> You should kick someone only if: <ol><li> They are flooding the channel. </li><li> They have been warned about being annoying or abusive at least twice, while the person who has warned them has been an op, and still continue. Do not randomly kick people without warning them. We don&apos;t want #perl to be turned into another EF-Net. </li></ol></li><li> You should ban someone only if: <ol><li> They continuously join after being kicked several times. </li><li> They are spammers who spam the channel with ads or other things like that. </li></ol></li><li> The topic should remain in good taste. Don&apos;t put material that is sexist, racist, or otherwise insulting there. </li></ol>
+<ol>
+
+<li> Don&apos;t remain an operator for too long. Become an operator only to change the topic or to warn someone that he would be kicked if they continue with their abusive beahviour, or to ban an abusive person (see below). Use /msg ChanServ OP #perl $my_nick to become an operator, and de-op yourself using your IRC client to switch back and forth.
+</li>
+
+<li> You should kick someone only if:
+
+<ol>
+
+<li> They are flooding the channel.
+</li>
+
+<li> They have been warned about being annoying or abusive at least twice, while the person who has warned them has been an op, and still continue. Do not randomly kick people without warning them. We don&apos;t want #perl to be turned into another EF-Net.
+</li></ol>
+</li>
+
+<li> You should ban someone only if:
+
+<ol>
+
+<li> They continuously join after being kicked several times.
+</li>
+
+<li> They are spammers who spam the channel with ads or other things like that.
+</li></ol>
+</li>
+
+<li> The topic should remain in good taste. Don&apos;t put material that is sexist, racist, or otherwise insulting there.
+</li></ol>
 
 <h3 id="What_do_I_need_to_do_to_get_a_good_answer_to_my_question.3F"> What do I need to do to get a good answer to my question? </h3>
 
 </p>
 
 <ol>
-<li>Perl. (Naturally).</li>
-<li>Computing in general. (UNIX, Linux, Mac OS X, history of computing, etc.)</li>
-<li>Other programming languages - C and C++; Perl alternatives like PHP, Python or Ruby; Lisp and Scheme; Haskell, O&apos;Caml, etc.; Assembler; and more exotic languages. <ul><li>We still try to focus on Perl, though.</li>
-</ul></li>
-<li>Geography, culture, linguistics, languages, etc.</li>
-<li>Science.</li>
-<li>Philosophy.</li>
-<li>Popular Culture</li>
-<li>Etc.</li>
+<li>Perl. (Naturally).
+</li>
+<li>Computing in general. (UNIX, Linux, Mac OS X, history of computing, etc.)
+</li>
+<li>Other programming languages - C and C++; Perl alternatives like PHP, Python or Ruby; Lisp and Scheme; Haskell, O&apos;Caml, etc.; Assembler; and more exotic languages. <ul>
+
+<li>We still try to focus on Perl, though.
+</li>
+</ul>
+</li>
+<li>Geography, culture, linguistics, languages, etc.
+</li>
+<li>Science.
+</li>
+<li>Philosophy.
+</li>
+<li>Popular Culture
+</li>
+<li>Etc.
+</li>
 </ol>
 
 <p>It is considered polite to keep off-topic - that is, non-Perl-related - discussion to a minimum when people in the channel are genuinely trying to get Perl help, since it seems unfair that a topical discussion get swamped by a lot of off-topic messages. Please consider that people who are asking for help are more likely to have less experience with following separate discussions in IRC.
 </p>
 </li>
 
-<li>If you&apos;re using Unix or a Unix-like operating system, check that your program is set to be executable (<tt>chmod a+x &lt;file&gt;</tt>).</li>
-<li>Are you sure your script compiles and runs? Test it locally (<tt>perl -c &lt;file&gt;</tt>), test it remotely. If it&apos;s a CGI script, check the error log.</li>
+<li>If you&apos;re using Unix or a Unix-like operating system, check that your program is set to be executable (<tt>chmod a+x &lt;file&gt;</tt>).
+</li>
+<li>Are you sure your script compiles and runs? Test it locally (<tt>perl -c &lt;file&gt;</tt>), test it remotely. If it&apos;s a CGI script, check the error log.
+</li>
 
 </ol>
 
 </p>
 
 <ol>
-<li>Turn on warnings. Add a -w to your she-bang line <tt>#!/usr/bin/perl -w</tt> and fix your code so no warnings are emitted.</li>
-<li>Turn on strict. Add the line <tt>use strict;</tt> under the she-bang line and fix the errors that creates.</li>
-<li>Use the perl debugger - <tt>perl -d</tt>, etc. to see where exactly it fails.</li>
+<li>Turn on warnings. Add a -w to your she-bang line <tt>#!/usr/bin/perl -w</tt> and fix your code so no warnings are emitted.
+</li>
+<li>Turn on strict. Add the line <tt>use strict;</tt> under the she-bang line and fix the errors that creates.
+</li>
+<li>Use the perl debugger - <tt>perl -d</tt>, etc. to see where exactly it fails.
+</li>
 </ol>
 
 
 <pre>  &lt;perlbot&gt; no strict no warnings no help. That&apos;s the #perl motto!
 </pre>
 <p>Make sure you add &quot;use strict;&quot; and &quot;use warnings;&quot; to your code. This is not the only thing you should do, though. Other good practices are:
-</p><ol><li> Use lexical file handles (<tt>open my $file_handle, ...</tt>) and three args open (<tt>open my $file_handle, &quot;&gt;&quot;, $filename</tt> instead of <tt>open my $file_handle &quot;&gt;$filename&quot;</tt>) and add trailing or&apos;s to your open statements (or alternatively use the &quot;Fatal&quot; or &quot;autodie&quot; modules.) </li><li> When extracting arguments out of @ARGV or @_ , don&apos;t do subscripting of $ARGV[1] or $_[2] directly - instead use <a href="http://perldoc.perl.org/functions/shift.html">perldoc -f shift</a> or <tt>my ($param1, $param2...) = @_;</tt>. The reason for that is that if you insert an argument in the middle, you&apos;ll need to update all indices. <ul><li> For @ARGV also look at <a class="extiw" href="http://search.cpan.org/dist/Getopt-Long" title="cpan:Getopt-Long">Getopt-Long</a> and related modules. </li></ul></li><li> Don&apos;t abuse the default variable - <tt>$_</tt>. Use explicit variables instead whenever possible, and don&apos;t nest two <tt>$_</tt>-loops. While it should still be used in <a href="http://perldoc.perl.org/functions/map.html">map()</a>, <a href="http://perldoc.perl.org/functions/grep.html">grep()</a>, etc. it should generally be avoided except for very small scripts. </li><li> To subscript an array/hash reference, don&apos;t do something like <tt>${$array_ref}[$index]</tt> (or worse - <tt>$$array_ref[$index]</tt> - instead use <tt>$array_ref-&gt;[$index]</tt> which is clearer and better. Note that if you want to take an array or hash slice, then you do need to use <tt>@{$array_ref}[@indexes]</tt> and that&apos;s ok. <ul><li> Also note that the second and subsequent subscripts have optional arrows so: <tt>$array_ref-&gt;[$index1]-&gt;{$key1}</tt> can be written as <tt>$array_ref-&gt;[$index]{$key1}</tt>. The first arrow is not optional so you cannot say <tt>$array_ref[$index1]</tt> which belongs to the array <tt>@array_ref</tt>. </li></ul></li></ol>
+</p>
+
+<ol>
+
+<li> Use lexical file handles (<tt>open my $file_handle, ...</tt>) and three args open (<tt>open my $file_handle, &quot;&gt;&quot;, $filename</tt> instead of <tt>open my $file_handle &quot;&gt;$filename&quot;</tt>) and add trailing or&apos;s to your open statements (or alternatively use the &quot;Fatal&quot; or &quot;autodie&quot; modules.)
+</li>
+
+<li> When extracting arguments out of @ARGV or @_ , don&apos;t do subscripting of $ARGV[1] or $_[2] directly - instead use <a href="http://perldoc.perl.org/functions/shift.html">perldoc -f shift</a> or <tt>my ($param1, $param2...) = @_;</tt>. The reason for that is that if you insert an argument in the middle, you&apos;ll need to update all indices. <ul>
+
+<li> For @ARGV also look at <a class="extiw" href="http://search.cpan.org/dist/Getopt-Long" title="cpan:Getopt-Long">Getopt-Long</a> and related modules.
+</li></ul>
+</li>
+
+<li> Don&apos;t abuse the default variable - <tt>$_</tt>. Use explicit variables instead whenever possible, and don&apos;t nest two <tt>$_</tt>-loops. While it should still be used in <a href="http://perldoc.perl.org/functions/map.html">map()</a>, <a href="http://perldoc.perl.org/functions/grep.html">grep()</a>, etc. it should generally be avoided except for very small scripts.
+</li>
+
+<li> To subscript an array/hash reference, don&apos;t do something like <tt>${$array_ref}[$index]</tt> (or worse - <tt>$$array_ref[$index]</tt> - instead use <tt>$array_ref-&gt;[$index]</tt> which is clearer and better. Note that if you want to take an array or hash slice, then you do need to use <tt>@{$array_ref}[@indexes]</tt> and that&apos;s ok. <ul>
+
+<li> Also note that the second and subsequent subscripts have optional arrows so: <tt>$array_ref-&gt;[$index1]-&gt;{$key1}</tt> can be written as <tt>$array_ref-&gt;[$index]{$key1}</tt>. The first arrow is not optional so you cannot say <tt>$array_ref[$index1]</tt> which belongs to the array <tt>@array_ref</tt>.
+</li></ul>
+</li></ol>
 <p>For more information refer to <a href="http://perl.net.au/wiki/Damian_Conway" title="Damian Conway">Damian Conway</a>&apos;s book <a href="http://perl.net.au/wiki/Perl_Best_Practices" title="Perl Best Practices">Perl Best Practices</a>.
 </p>
 
 <h3 id="I_need_to_parse_HTML_with_Perl_.28and_my_Regular_Expression_does_not_work.29"> I need to parse HTML with Perl (and my Regular Expression does not work) </h3>
 
 <p>If you want to parse HTML with Perl, then <a href="http://htmlparsing.icenine.ca/">regular expressions are probably not the answer</a>. Instead look at:
-</p><ul><li><a href="http://search.cpan.org/perldoc?Web::Scraper">Web::Scraper</a></li><li><a href="http://search.cpan.org/dist/HTML-Parser/lib/HTML/TokeParser.pm">HTML::TokeParser</a> - a basic tokenising HTML parser. </li><li><a href="http://cpan.uwinnipeg.ca/htdocs/HTML-Tree/HTML/TreeBuilder.html">HTML::TreeBuilder</a> - an abstraction for searching the HTML document as a tree. </li><li><a href="http://search.cpan.org/dist/XML-LibXML/">XML::LibXML</a> - has an HTML Parser with a DOM/XPath interface. </li></ul>
+</p><ul>
+
+<li>
+<a href="http://search.cpan.org/perldoc?Web::Scraper">Web::Scraper</a>
+</li>
+
+<li>
+<a href="http://search.cpan.org/dist/HTML-Parser/lib/HTML/TokeParser.pm">HTML::TokeParser</a> - a basic tokenising HTML parser.
+</li>
+
+<li>
+<a href="http://cpan.uwinnipeg.ca/htdocs/HTML-Tree/HTML/TreeBuilder.html">HTML::TreeBuilder</a> - an abstraction for searching the HTML document as a tree.
+</li>
+
+<li>
+<a href="http://search.cpan.org/dist/XML-LibXML/">XML::LibXML</a> - has an HTML Parser with a DOM/XPath interface.
+</li></ul>
 
 <h3 id="Can_I_write_Graphical_User-Interfaces_.28GUIs.29_in_Perl.3F_And_How.3F"> Can I write Graphical User-Interfaces (GUIs) in Perl? And How? </h3>
 
 <p>Yes, you can. Here&apos;s how:
-</p><ol><li><a href="http://search.cpan.org/dist/Tkx/">Tkx</a> - a cross-platform wrapper for Tcl/Tk, providing native look on every OS. Excellent tutorial at <a href="http://www.tkdocs.com/tutorial/">TkDocs</a>. </li><li><a href="http://www.perltk.org/">Perl/Tk</a> - an old cross-platform toolkit, with a few limitations and a poor look and feel. Should be very flexible. </li><li><a href="http://wxperl.sourceforge.net/">wxPerl</a> - a cross-platform GUI toolkit that uses the system&apos;s native controls. </li><li><a href="http://gtk2-perl.sourceforge.net/">Perl/Gtk2</a> - a GUI toolkit primarily intended for UNIXes, but also works on Windows with a very non-native look. wxWidgets uses it on UNIXes. </li><li><a href="http://perlqt.sourceforge.net/">PerlQt</a> - Perl using the Qt widget toolkit, on which KDE is based. Unmaintained. </li></ol>
+</p>
+
+<ol>
+
+<li>
+<a href="http://search.cpan.org/dist/Tkx/">Tkx</a> - a cross-platform wrapper for Tcl/Tk, providing native look on every OS. Excellent tutorial at <a href="http://www.tkdocs.com/tutorial/">TkDocs</a>.
+</li>
+
+<li>
+<a href="http://www.perltk.org/">Perl/Tk</a> - an old cross-platform toolkit, with a few limitations and a poor look and feel. Should be very flexible.
+</li>
+
+<li>
+<a href="http://wxperl.sourceforge.net/">wxPerl</a> - a cross-platform GUI toolkit that uses the system&apos;s native controls.
+</li>
+
+<li>
+<a href="http://gtk2-perl.sourceforge.net/">Perl/Gtk2</a> - a GUI toolkit primarily intended for UNIXes, but also works on Windows with a very non-native look. wxWidgets uses it on UNIXes.
+</li>
+
+<li>
+<a href="http://perlqt.sourceforge.net/">PerlQt</a> - Perl using the Qt widget toolkit, on which KDE is based. Unmaintained.
+</li></ol>
 
 <h3 id="How_can_I_break.2Fskip_an_outer_loop.3F"> How can I break/skip an outer loop? </h3>
 
 <p>The short answer is that when a file is being <tt>do</tt>&apos;ed, <tt>eval slurp($file)</tt>&apos;ed, <tt>require</tt>&apos;ed or <tt>use</tt>&apos;ed it happens in a nested scope to the invoked one. As a result lexical variables (those declared with <tt>my</tt>) are inaccessible from the calling scope. The Perl 5 designers considered merely including the code of another file in another program directly a bad idea.
 </p>
 <p>What you should do instead is either:
-</p><ol><li> Convert the included code to be a Perl module (a <tt>.pm</tt> file). Then use or require it. </li><li> Invoke the perl script as a separate process if it&apos;s appropriate. </li></ol>
+</p>
+
+<ol>
+
+<li> Convert the included code to be a Perl module (a <tt>.pm</tt> file). Then use or require it.
+</li>
+
+<li> Invoke the perl script as a separate process if it&apos;s appropriate.
+</li></ol>
 <p>If you want to access the variables of a different file, you need to declare them using <tt>our</tt> or the <tt>use vars</tt> pragma. A more advisable way would be to control access to them using functions.
 </p>
 <p>For more information see:
-</p><ol><li><a href="http://perl.plover.com/FAQs/Namespaces.html">Mark Jason Dominus&apos; &quot;Coping with Scoping&quot;</a></li><li><a href="http://www.stonehenge.com/merlyn/UnixReview/col46.html">Randal L. Schwartz&apos; &quot;Variables and Scoping&quot;</a></li><li><a href="http://www.mail-archive.com/linux-il%40cs.huji.ac.il/msg33714.html">A post to the Linux-IL mailing list</a> explaining the difference between local and my by <a href="http://perl.net.au/wiki/Shlomi_Fish" title="Shlomi Fish">Shlomi Fish</a>. </li></ol>
+</p>
+
+<ol>
+
+<li>
+<a href="http://perl.plover.com/FAQs/Namespaces.html">Mark Jason Dominus&apos; &quot;Coping with Scoping&quot;</a>
+</li>
+
+<li>
+<a href="http://www.stonehenge.com/merlyn/UnixReview/col46.html">Randal L. Schwartz&apos; &quot;Variables and Scoping&quot;</a>
+</li>
+
+<li>
+<a href="http://www.mail-archive.com/linux-il%40cs.huji.ac.il/msg33714.html">A post to the Linux-IL mailing list</a> explaining the difference between local and my by <a href="http://perl.net.au/wiki/Shlomi_Fish" title="Shlomi Fish">Shlomi Fish</a>.
+</li></ol>
 
 <h3 id="How_can_I_format_numbers_with_certain_digits.3F"> How can I format numbers with certain digits? </h3>
 
 <h3 id="Where_else_can_I_go_for_help.3F"> Where else can I go for help? </h3>
 
 <p>You may find these other resources useful as well:
-</p><ul><li><a href="http://www.pm.org/">Your local Perl Monger group</a></li><li><a href="http://perlmonks.org/">Perl Monks forum</a></li></ul>
+</p><ul>
+
+<li>
+<a href="http://www.pm.org/">Your local Perl Monger group</a>
+</li>
+
+<li>
+<a href="http://perlmonks.org/">Perl Monks forum</a>
+</li></ul>
 
 <h3 id="How_do_I_know_the_index_of_the_element_in_a_foreach_loop.3F"> How do I know the index of the element in a foreach loop? </h3>
 
 <h3 id="Which_method_to_do_.24TASK_X_is_faster.3F_How_can_I_optimise_my_Perl_programs.3F"> Which method to do $TASK_X is faster? How can I optimise my Perl programs? </h3>
 
 <p>Questions such as this come out very often on #perl. The answers to them are that:
-</p><ol><li> You can always Benchmark and see. See the <a class="extiw" href="http://search.cpan.org/dist/Benchmark" title="cpan:Benchmark">cpan:Benchmark</a> module which is part of the core. </li><li> Usually, the performance gained by doing micro-optimisations in Perl is not going to be worth the trouble. </li><li> If you really need performance for certain tasks that take too long, then you should probably look at a highly optimised solution written in a compiled-to-machine-code language. See Perl&apos;s XS or <a class="extiw" href="http://search.cpan.org/dist/Inline-C" title="cpan:Inline-C">cpan:Inline-C</a> for more information. However, going to this extreme is usually not what most people who ask us about performance want or need. </li></ol>
+</p>
+
+<ol>
+
+<li> You can always Benchmark and see. See the <a class="extiw" href="http://search.cpan.org/dist/Benchmark" title="cpan:Benchmark">cpan:Benchmark</a> module which is part of the core.
+</li>
+
+<li> Usually, the performance gained by doing micro-optimisations in Perl is not going to be worth the trouble.
+</li>
+
+<li> If you really need performance for certain tasks that take too long, then you should probably look at a highly optimised solution written in a compiled-to-machine-code language. See Perl&apos;s XS or <a class="extiw" href="http://search.cpan.org/dist/Inline-C" title="cpan:Inline-C">cpan:Inline-C</a> for more information. However, going to this extreme is usually not what most people who ask us about performance want or need.
+</li></ol>
 <p>The legendary computer scientist <a class="extiw" href="http://www.wikipedia.org/wiki/Donald_Knuth" title="wikipedia:Donald_Knuth">wikipedia:Donald Knuth</a> has quoted C.A.R. Hoare in saying that <a href="http://c2.com/cgi/wiki?PrematureOptimization">&quot;Premature Optimisation is the Root of All Evil&quot;</a>, so it&apos;s worth paying attention to. (More discussion on the link).
 </p>
 
 <h3 id="Oh_no.21_CPAN_won.27t_use_the_packages_it_has_downloaded.21__It_says_the_checksums_are_invalid.21"> Oh no! CPAN won&apos;t use the packages it has downloaded! It says the checksums are invalid! </h3>
 
 <p>There are two reasons for this happening:
-</p><ol><li> You have a dodgy mirror. Try a different mirror and see if it clears up. </li><li> For whatever reason, the file is being downloaded and saved as .tar (but still very much compressed). The file gets recompressed and as such the checksum operation fails to produce a correct checksum. </li></ol>
+</p>
+
+<ol>
+
+<li> You have a dodgy mirror. Try a different mirror and see if it clears up.
+</li>
+
+<li> For whatever reason, the file is being downloaded and saved as .tar (but still very much compressed). The file gets recompressed and as such the checksum operation fails to produce a correct checksum.
+</li></ol>
 <p>For the latter, there is a relatively simple solution - move the .tar files to .tar.gz and rerun. Aaron_Mason wrote a script that runs CPAN with the parameters you seek, then check for any stray .tar files with a corresponding .tar.gz and move the .tar over the .tar.gz. This solution is far from foolproof, but got through a CPAN upgrade. The script is as follows:
 </p><pre>#!/usr/local/bin/bash
 
 <h3 id="Where_can_I_find_lists_of_Programming_Challenges.3F"> Where can I find lists of Programming Challenges? </h3>
 
 <p>Here are some lists:
-</p><ol><li><a href="http://projecteuler.net/">Project Euler</a> - mathematical problems that one is expected to solve using a computer. </li><li><a href="http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html">99 Problems in Lisp</a> - most are applicable to Perl too. </li><li><a href="http://perl.plover.com/qotw/">Perl Quiz of the Week</a> - Used to be active, and people may still peruse the archives for problems and solutions. Note that newer challenges are only in the <a href="http://news.gmane.org/gmane.comp.lang.perl.qotw.discuss">qotw-discuss archives</a>. </li><li> Some Perl books and tutorials contain exercises. See for example <a href="http://oreilly.com/catalog/9780596520106/">Learning Perl</a>. <ul><li> The book <a href="http://mitpress.mit.edu/sicp/">Structure and Interpretation of Computer Programs (SICP)</a> contains numerous exercises. Its text is available online. </li></ul></li></ol>
+</p>
+
+<ol>
+
+<li>
+<a href="http://projecteuler.net/">Project Euler</a> - mathematical problems that one is expected to solve using a computer.
+</li>
+
+<li>
+<a href="http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html">99 Problems in Lisp</a> - most are applicable to Perl too.
+</li>
+
+<li>
+<a href="http://perl.plover.com/qotw/">Perl Quiz of the Week</a> - Used to be active, and people may still peruse the archives for problems and solutions. Note that newer challenges are only in the <a href="http://news.gmane.org/gmane.comp.lang.perl.qotw.discuss">qotw-discuss archives</a>.
+</li>
+
+<li> Some Perl books and tutorials contain exercises. See for example <a href="http://oreilly.com/catalog/9780596520106/">Learning Perl</a>. <ul>
+
+<li> The book <a href="http://mitpress.mit.edu/sicp/">Structure and Interpretation of Computer Programs (SICP)</a> contains numerous exercises. Its text is available online.
+</li></ul>
+</li></ol>
 
 <h3 id="Where_can_I_find_an_interactive_version_of_Perl.3F_.28a.k.a_a_REPL_-_Read-Eval-Print-Loop.29"> Where can I find an interactive version of Perl? (a.k.a a REPL - Read-Eval-Print-Loop) </h3>
 
 <h3 id="How_can_I_store_Perl_Data_Structures_on_the_Hard_Disk.3F"> How can I store Perl Data Structures on the Hard Disk? </h3>
 
 <p>Sometimes we&apos;d like to store arbitrary Perl 5 Data Structures on the hard disk for various reasons including persistence and communication. This is called <b>serialisation</b> (or <b>serialization</b> in American spelling), and can be performed in several ways.
-</p><ol><li><a class="extiw" href="http://search.cpan.org/dist/Data-Dumper" title="cpan:Data-Dumper">Data-Dumper</a> allows one to serialise arbitrary data structures into a human readable Perl code (which is also capable of evaluation). Note that performing string eval for arbitrary Perl code like that is not recommended for security reasons, so make sure you can trust that data. </li><li><a class="extiw" href="http://search.cpan.org/dist/Storable" title="cpan:Storable">Storable</a> (another core module) serialises data structures to a binary format (make sure you use its portable format), and allows for serialising, deserialising, cloning a complex data structure, etc. This module is Perl 5-specific, though. </li><li><a class="new" href="http://perl.net.au/wiki/?title=JSON&amp;action=edit" title="JSON">JSON</a> is short for &quot;<a class="new" href="http://perl.net.au/wiki/?title=JavaScript&amp;action=edit" title="JavaScript">JavaScript</a> Object Notation&quot; and can be used to serialise data structures using JS notation. The <a class="extiw" href="http://search.cpan.org/dist/JSON-XS" title="cpan:JSON-XS">JSON-XS</a> CPAN module is recommended for that. Note that JavaScript does not support several Perl 5-specific features such as having a reference to a scalar. </li><li><a class="new" href="http://perl.net.au/wiki/?title=YAML&amp;action=edit" title="YAML">YAML</a> is a markup language (see <a class="extiw" href="http://search.cpan.org/dist/YAML-XS" title="cpan:YAML-XS">YAML-XS</a>) for represnting complex data structures. It is more complex than JSON, and more error-prone but also gives some user-friendly enhancements. </li></ol>
+</p>
+
+<ol>
+
+<li><a class="extiw" href="http://search.cpan.org/dist/Data-Dumper" title="cpan:Data-Dumper">Data-Dumper</a> allows one to serialise arbitrary data structures into a human readable Perl code (which is also capable of evaluation). Note that performing string eval for arbitrary Perl code like that is not recommended for security reasons, so make sure you can trust that data.
+</li>
+
+<li><a class="extiw" href="http://search.cpan.org/dist/Storable" title="cpan:Storable">Storable</a> (another core module) serialises data structures to a binary format (make sure you use its portable format), and allows for serialising, deserialising, cloning a complex data structure, etc. This module is Perl 5-specific, though.
+</li>
+
+<li><a class="new" href="http://perl.net.au/wiki/?title=JSON&amp;action=edit" title="JSON">JSON</a> is short for &quot;<a class="new" href="http://perl.net.au/wiki/?title=JavaScript&amp;action=edit" title="JavaScript">JavaScript</a> Object Notation&quot; and can be used to serialise data structures using JS notation. The <a class="extiw" href="http://search.cpan.org/dist/JSON-XS" title="cpan:JSON-XS">JSON-XS</a> CPAN module is recommended for that. Note that JavaScript does not support several Perl 5-specific features such as having a reference to a scalar.
+</li>
+
+<li><a class="new" href="http://perl.net.au/wiki/?title=YAML&amp;action=edit" title="YAML">YAML</a> is a markup language (see <a class="extiw" href="http://search.cpan.org/dist/YAML-XS" title="cpan:YAML-XS">YAML-XS</a>) for represnting complex data structures. It is more complex than JSON, and more error-prone but also gives some user-friendly enhancements.
+</li></ol>
 <p>If you want random lookup, look at the various <a class="new" href="http://perl.net.au/wiki/?title=Wikiepdia:Embedded_database&amp;action=edit" title="Wikiepdia:Embedded database">embedded database</a> solutions, such as:
-</p><ul><li><a class="extiw" href="http://www.wikipedia.org/wiki/Berkeley_DB" title="wikipedia:Berkeley_DB">Berkeley DB</a> - very comprehensive and under a strong copyleft licence. </li><li><a href="http://1978th.net/tokyocabinet/">Tokyo Cabinet</a> - a modern DBM implementation with high performance and a <a class="extiw" href="http://www.wikipedia.org/wiki/LGPL" title="wikipedia:LGPL">LGPL</a> licence. </li><li><a href="http://www.sqlite.org/">SQLite</a> - an embedded, high-performance <a class="new" href="http://perl.net.au/wiki/?title=SQL&amp;action=edit" title="SQL">SQL</a> database. </li></ul>
+</p><ul>
+
+<li><a class="extiw" href="http://www.wikipedia.org/wiki/Berkeley_DB" title="wikipedia:Berkeley_DB">Berkeley DB</a> - very comprehensive and under a strong copyleft licence.
+</li>
+
+<li>
+<a href="http://1978th.net/tokyocabinet/">Tokyo Cabinet</a> - a modern DBM implementation with high performance and a <a class="extiw" href="http://www.wikipedia.org/wiki/LGPL" title="wikipedia:LGPL">LGPL</a> licence.
+</li>
+
+<li>
+<a href="http://www.sqlite.org/">SQLite</a> - an embedded, high-performance <a class="new" href="http://perl.net.au/wiki/?title=SQL&amp;action=edit" title="SQL">SQL</a> database.
+</li></ul>
 <p><b>TODO</b>: add DBM, etc.
 </p>
 
 <h3 id="How_do_I_pass_a_reference_to_an_object.27s_method.3F_.28Also_known_as_class_subroutine_or_member_function.29"> How do I pass a reference to an object&apos;s method? (Also known as class subroutine or member function) </h3>
 
 <p>You have several options to pass a reference to a method, which differ in their syntax and semantics. Here is the list:
-</p><ol><li> The first method is to do <tt>sub { return $self-&gt;my_method(@_); }</tt> within a scope that has the object reference $self valid. This will always call my_method on the physical $self reference. </li><li> You can pass the name of the method as a string and then do <tt>$some_obj-&gt;$some_method(@args)</tt>. This requires applying $some_method on an object explicitly and handles inheritance well. </li></ol>
+</p>
+
+<ol>
+
+<li> The first method is to do <tt>sub { return $self-&gt;my_method(@_); }</tt> within a scope that has the object reference $self valid. This will always call my_method on the physical $self reference.
+</li>
+
+<li> You can pass the name of the method as a string and then do <tt>$some_obj-&gt;$some_method(@args)</tt>. This requires applying $some_method on an object explicitly and handles inheritance well.
+</li></ol>
 
 <h3 id="How_do_I_trim_leading_and.2For_trailing_whitespace_from_a_string.3F"> How do I trim leading and/or trailing whitespace from a string? </h3>
 
 <h3 id="How_do_I_add_directories_to_the_list_of_paths_where_Perl_searches_for_modules.3F_.28.40INC.29"> How do I add directories to the list of paths where Perl searches for modules? (@INC) </h3>
 
 <p>There are several ways to do it:
-</p><ol><li> &apos;use lib&apos; <a href="http://perldoc.perl.org/lib.html">perldoc lib</a>. </li><li> use the -I option to perl <a href="http://perldoc.perl.org/perlrun.html">perldoc perlrun</a>. </li><li> Set the PERLLIB or PERL5LIB environment variable <a href="http://perldoc.perl.org/perlrun.html">perldoc perlrun</a></li><li> Finally you may opt to recompile perl. </li></ol>
+</p>
+
+<ol>
+
+<li> &apos;use lib&apos; <a href="http://perldoc.perl.org/lib.html">perldoc lib</a>.
+</li>
+
+<li> use the -I option to perl <a href="http://perldoc.perl.org/perlrun.html">perldoc perlrun</a>.
+</li>
+
+<li> Set the PERLLIB or PERL5LIB environment variable <a href="http://perldoc.perl.org/perlrun.html">perldoc perlrun</a>
+</li>
+
+<li> Finally you may opt to recompile perl.
+</li></ol>
 <p>After that you can add <tt>use MyModule;</tt> to your code and it will work. Please don&apos;t resort to <tt>do &quot;/full/path/to/include.pl&quot;</tt> games.
 </p>
 
 </p>
 
 <ol>
-    <li>
+
+
+<li>
     <p>
     One uses <tt>$my_array[$idx]</tt> to access an element of an array,
     and <tt>$my_array_ref-&gt;[$idx]</tt> to access an element of an array
     reference (or alternatively the more cluttered
     <tt>$$my_array_ref[$idx]</tt> or <tt>${$my_array_ref}[$idx]</tt>
     </p>
-    </li>
-    <li>
+
+</li>
+
+
+<li>
     <p>
     One uses <tt>@my_array</tt> to access the array as a whole and
     <tt>@$my_array_ref</tt> to access the array referred to by the array
     reference as a whole.
     </p>
-    </li>
+
+</li>
 </ol>
 
 <p>
 <h3 id="sharp_perlcafe"><a href="irc://irc.freenode.net/perlcafe" title="irc://irc.freenode.net/perlcafe">#perlcafe</a></h3>
 
 <p>The <a href="http://perl.net.au/wiki/Freenode_Sharp_Perlcafe" title="Freenode Sharp Perlcafe">Perl Café</a> exists to move off-topic discussions out of #perl. The channel is very lax, but often heavy on the irony. Examples of conversation include:
-</p><ol><li> Café-speak (&quot;teh hawt&quot;, &quot;I buyed&quot;, &quot;teh ghey&quot;, &quot;n u&quot;) — you get the idea. </li><li> People discussing their love-lives (or their lack of them), their co-workers, their friends, and their enemies. </li><li> Unusual humour and lots of cursing (particularly at each other). </li><li> Discussing both obscure and everyday political issues. </li><li> Personal conversation during what would otherwise be a boring work day. </li></ol>
+</p>
+
+<ol>
+
+<li> Café-speak (&quot;teh hawt&quot;, &quot;I buyed&quot;, &quot;teh ghey&quot;, &quot;n u&quot;) — you get the idea.
+</li>
+
+<li> People discussing their love-lives (or their lack of them), their co-workers, their friends, and their enemies.
+</li>
+
+<li> Unusual humour and lots of cursing (particularly at each other).
+</li>
+
+<li> Discussing both obscure and everyday political issues.
+</li>
+
+<li> Personal conversation during what would otherwise be a boring work day.
+</li></ol>
 <p>Sometimes the discussion gets more high-quality, but it&apos;s still a channel where chat occurs that some may find questionable. Viewer discretion is advised.
 </p>
 <p>Also see its own page at <a href="http://perl.net.au/wiki/Freenode_Sharp_Perlcafe" title="Freenode Sharp Perlcafe">Freenode Sharp Perlcafe</a>.
 <h3 id="sharp_lispcafe"><a href="irc://irc.freenode.net/lispcafe" title="irc://irc.freenode.net/lispcafe">#lispcafe</a></h3>
 
 <p><a href="irc://irc.freenode.net/lispcafe" title="irc://irc.freenode.net/lispcafe">#lispcafe</a> is an off-shoot of #lisp and #perlcafe. The primary lisp channel #lisp is restricted to &quot;on-topic&quot; discussion of Common Lisp. Thus #lispcafe was founded to accept off-topic discussions. Unlike #perlcafe, #lispcafe attempts to be more civil. Discussions of Perl and other dynamic languages is acceptable on #lispcafe, so you might wish to visit it, introduce yourself and join the fun.
-</p><ol><li>lispcafe has <a href="http://www.cliki.net/lispcafe">its own page</a> on the Common Lisp wiki. </li></ol>
+</p>
+
+<ol>
+
+<li>lispcafe has <a href="http://www.cliki.net/lispcafe">its own page</a> on the Common Lisp wiki.
+</li></ol>
 
 <h3 id="sharp_perl-cats"><a href="irc://irc.freenode.net/perl-cats" title="irc://irc.freenode.net/perl-cats">#perl-cats</a></h3>
 
 <p>Shlomi has many interests including: programming and software development, open-source use, development and advocacy, creative writing, applied philosophy and writing essays, biking, science, logic and applied logic, cognitive psychology, mathematics and puzzles, linguistics, history of the Old World, etc. He has a Bachelor of Science from <a href="http://www.shlomifish.org/philosophy/computers/education/opinion-on-the-technion/">the Technion in Electrical Engineering</a>, but thinks it would be a stretch to call him an Electrical Engineer.
 </p>
 <p>Perl is his favourite language. Among his contributions to the Perl world are:
-</p><ol><li><a href="http://perl-begin.org/">The Perl Beginners&apos; Site</a></li><li><a href="http://www.shlomifish.org/lecture/Perl/Newbies/">Perl for Newbies</a> - a series of presentations with free onlne slides, introducing the core Perl language to beginners. </li><li><a href="http://search.cpan.org/~shlomif/">Some CPAN Modules</a></li></ol>
+</p>
+
+<ol>
+
+<li>
+<a href="http://perl-begin.org/">The Perl Beginners&apos; Site</a>
+</li>
+
+<li>
+<a href="http://www.shlomifish.org/lecture/Perl/Newbies/">Perl for Newbies</a> - a series of presentations with free onlne slides, introducing the core Perl language to beginners.
+</li>
+
+<li>
+<a href="http://search.cpan.org/~shlomif/">Some CPAN Modules</a>
+</li></ol>
 <p>He prides himself in being the &quot;Black Sheep&quot; of the Perl world, due to writing some controversial essays, and because he is considered a &quot;Persona Non-grata&quot; in some Perl communities.
 </p>
 
 <p>Here are our milestone pictures:
 </p>
 <ul>
-<li><a href="http://www.shlomifish.org/Files/files/images/FreeNode-perl-400-participants.png">400 Participants</a></li>
-<li><a href="http://www.shlomifish.org/Files/files/images/Freenode-perl-500-participants.png">500 Participants</a></li>
-<li><a href="http://www.shlomifish.org/Files/files/images/Freenode-perl-600-participants.png">600 Participants</a></li>
-<li><a href="http://www.shlomifish.org/Files/files/images/Freenode-perl-700-participants.png">700 Participants</a></li>
+<li>
+<a href="http://www.shlomifish.org/Files/files/images/FreeNode-perl-400-participants.png">400 Participants</a>
+</li>
+<li>
+<a href="http://www.shlomifish.org/Files/files/images/Freenode-perl-500-participants.png">500 Participants</a>
+</li>
+<li>
+<a href="http://www.shlomifish.org/Files/files/images/Freenode-perl-600-participants.png">600 Participants</a>
+</li>
+<li>
+<a href="http://www.shlomifish.org/Files/files/images/Freenode-perl-700-participants.png">700 Participants</a>
+</li>
 </ul>
 </div>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.