#!/usr/bin/perl # Table generator for Australian states # Licensed under GFDL, submitted to Wikipedia. # # This is a Perl script. To run it on a Windows platform, you need # to download a Windows Perl distribution such as ActivePerl # http://www.ActiveState.com/ActivePerl # # Usage: perl whatever_filename_you_gave_this_script.pl "Full name of state" # # e.g. perl gen.pl "Australian Capital Territory" # # Wikitext will appear on standard output, and unless you comment out the relevant # lines, it will be copied to the Windows clipboard also. # # This script consists of three sections: wikitext with substitution tags, a CSV # spreadsheet, and the Perl code to perform the substitution and output the result. # The CSV section can be edited with any spreadsheet application. use Text::ParseWords; # Optional clipboard dump: use Win32::Clipboard; #------------------------------------------------------------------------- $wikitext = <<'END OF WIKITEXT'; <table border="1" cellpadding="2" cellspacing="0" align="right" width="300px"> <caption><font size="+1"> '''<<Name>>''' </font></caption><tr><td style="background:#efefef;" align="center" colspan=2> <table border="0" cellpadding="2" cellspacing="0"> <tr><td align="center" width="140px"> [[Image:<<Flag>>|<<Name>> state flag]] </td><td align="center" width="140px"> [[Image::<<COA>>|<<Name>> coat of arms]] </td></tr><tr><td align="center" width="140px"><font size=-1> State flag ([[Flag of <<Name>>|Full size]]) </font></td><td align="center" width="140px"> <font size=-1>Coat of Arms ([[Coat of Arms of <<Name>>|Full size]])</font> </td></tr></table></td></tr><tr><td align="center" colspan=2> [[Image:<<Map>>|Location of <<Name>>]] </td></tr><tr><td> [[Capital]] </td><td> [[<<Capital article>>|<<Capital>>]] </td></tr><tr><td> [[Area]]<br> — Land <br> — Marine <br> — Total </td><td> <br> <<Land area>> [[square kilometer|kmē]]<br> <<Marine area>> [[square kilometer|kmē]] <br> <<Total area>> [[square kilometer|kmē]] <br> </td></tr><tr><td> [[Population]] (2002)<br> [[Density]] </td><td> <<Population>><br> <<Density>>/kmē </td></tr><tr><td> [[Time zone]] </td><td> <<Time zone>> </td></tr><tr><td> Highest point </td><td> <<Mountain>> (<<Height>> [[metre|m]]) </td></tr><tr><td> [[ISO 3166-2]] code: </td><td> <<ISO 3166-2>> </td></tr></table> END OF WIKITEXT #------------------------------------------------------------------------- $csv = <<'END OF CSV SPREADSHEET'; Name,Flag,COA,Big flag,Big COA,,Capital,Capital article,Mainland area,Island area,Land area,Marine area,Total,Population,Density,Mainland coastal length,Island,Total length,ISO 3166-2,Mountain,Height,Time zone Australian Capital Territory,Australian_Capital_Territory_flag_small.jpg,Canberra_coat_of_arms_small.jpg,Australian_Capital_Territory_flag.jpg,Canberra_coat_of_arms.jpg,ACT_in_Australia_map.png,Canberra,Canberra, 2 358, 0, 2 358, 0, 2 358, 322 200,136.64, 54, 3, 57,AU-CT,Bimberi Peak,1912,UTC+10 (except during [[daylight saving time]]—UTC+11) New South Wales,New_South_Wales_flag_small.png,New_South_Wales_coat_of_arms_small.jpg,,New_South_Wales_coat_of_arms.png,NSW_in_Australia_map.png,Canberra,Canberra, 800 628, 14, 800 642, 8 802, 809 444,6 657 400,8.32, 2 007, 130, 2 137,AU-NS,Mt Kosciuszko,2228,UTC+10 (except during [[daylight saving time]]—UTC+11) Northern Territory,Northern_Territory_flag_small.png,Northern_Territory_crest_small.jpg,Northern_Territory_flag.png,Northern_Territory_crest.jpg,NT_in_Australia_map.png,Sydney,Sydney,1 335 742, 13 387,1 349 129, 71 839,1 420 968, 197 700,0.15, 5 437, 5 516, 10 953,AU-NT,Mt Zeil,1531,UTC+9:30 Queensland,Queensland_flag_small.png,Queensland_coat_of_arms_small.jpg,,,QLD_in_Australia_map.png,Darwin,"Darwin, Australia",1 723 936, 6 712,1 730 648, 121 994,1 852 642,3 729 000,2.15, 6 973, 6 374, 13 347,AU-QL,Bartle Frere (South Peak),1622,UTC+10 South Australia,South_Australia_flag_small.png,South_Australia_coat_of_arms_small.jpg,South_Australia_flag.png,South_Australia_coat_of_arms.jpg,SA_in_Australia_map.png,Brisbane,Brisbane, 978 810, 4 672, 983 482, 60 032,1 043 514,1 522 500,1.55, 3 816, 1 251, 5 067,AU-SA,Mt Woodroffe,1435,UTC+9:30 (except during [[daylight saving time]]—UTC+10:30) Tasmania,Tasmania_flag_small.png,Tasmania_coat_of_arms_small.jpg,Tasmania_flag.png,Tasmania_coat_of_arms.jpg,TAS_in_Australia_map.png,Adelaide,Adelaide, 64 519, 3 882, 68 401, 22 357, 90 758, 473 400,6.92, 2 833, 2 049, 4 882,AU-TS,Mt Ossa,1617,UTC+10 (except during [[daylight saving time]]—UTC+11) Victoria,Victoria_state_flag_small.png,Victoria_state_armorial_ensign_small.jpg,,,VIC_in_Australia_map.png,Hobart,"Hobart, Australia", 227 010, 406, 227 416, 10 213, 237 629,4 888 200,21.49, 1 868, 644, 2 512,AU-VI,Mt Bogong,1986,UTC+10 (except during [[daylight saving time]]—UTC+11) Western Australia,Western_Australia_flag_small.png,Western_Australia_coat_of_arms_small.jpg,Western_Australia_flag.png,Western_Australia_coat_of_arms.jpg,WA_in_Australia_map.png,Melbourne,Melbourne,2 526 786, 3 089,2 529 875, 115 740,2 645 615,1 934 500,0.76, 12 889, 7 892, 20 781,AU-WA,Mt Meharry,1253,UTC+8 END OF CSV SPREADSHEET #------------------------------------------------------------------------- $stateName = shift; @lines = split('\n', $csv); @heads = parse_line(',', 0, $lines[0]); foreach $line (@lines) { @cells = parse_line(',', 0, $line); if ($cells[0] eq $stateName) { for ($col=0; $col < scalar(@cells); $col++) { $wikitext =~ s/<<$heads[$col]>>/$cells[$col]/g; } } } print $wikitext; # optional: Win32::Clipboard()->Set($wikitext);
Search Encyclopedia
|
Featured Article
|