| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | package WWW::Google::CustomSearch::Params; | 
| 2 |  |  |  |  |  |  |  | 
| 3 |  |  |  |  |  |  | $WWW::Google::CustomSearch::Params::VERSION   = '0.37'; | 
| 4 |  |  |  |  |  |  | $WWW::Google::CustomSearch::Params::AUTHORITY = 'cpan:MANWAR'; | 
| 5 |  |  |  |  |  |  |  | 
| 6 |  |  |  |  |  |  | =head1 NAME | 
| 7 |  |  |  |  |  |  |  | 
| 8 |  |  |  |  |  |  | WWW::Google::CustomSearch::Params - Placeholders for parameters for WWW::Google::CustomSearch | 
| 9 |  |  |  |  |  |  |  | 
| 10 |  |  |  |  |  |  | =head1 VERSION | 
| 11 |  |  |  |  |  |  |  | 
| 12 |  |  |  |  |  |  | Version 0.37 | 
| 13 |  |  |  |  |  |  |  | 
| 14 |  |  |  |  |  |  | =head1 DESCRIPTION | 
| 15 |  |  |  |  |  |  |  | 
| 16 |  |  |  |  |  |  | B | 
| 17 |  |  |  |  |  |  |  | 
| 18 |  |  |  |  |  |  | =cut | 
| 19 |  |  |  |  |  |  |  | 
| 20 | 5 |  |  | 5 |  | 89 | use 5.006; | 
|  | 5 |  |  |  |  | 13 |  | 
| 21 | 5 |  |  | 5 |  | 21 | use strict; use warnings; | 
|  | 5 |  |  | 5 |  | 10 |  | 
|  | 5 |  |  |  |  | 96 |  | 
|  | 5 |  |  |  |  | 40 |  | 
|  | 5 |  |  |  |  | 7 |  | 
|  | 5 |  |  |  |  | 135 |  | 
| 22 | 5 |  |  | 5 |  | 21 | use Data::Dumper; | 
|  | 5 |  |  |  |  | 7 |  | 
|  | 5 |  |  |  |  | 256 |  | 
| 23 |  |  |  |  |  |  |  | 
| 24 | 5 |  |  | 5 |  | 1785 | use parent 'Exporter'; | 
|  | 5 |  |  |  |  | 1291 |  | 
|  | 5 |  |  |  |  | 25 |  | 
| 25 |  |  |  |  |  |  | our @EXPORT_OK = qw($FIELDS); | 
| 26 |  |  |  |  |  |  |  | 
| 27 |  |  |  |  |  |  | my $LANGUAGE = { | 
| 28 |  |  |  |  |  |  | 'lang_ar' => 1, 'lang_bg' => 1, 'lang_ca' => 1, 'lang_zh-cn' => 1, 'lang_zh-tw' => 1, | 
| 29 |  |  |  |  |  |  | 'lang_hr' => 1, 'lang_cs' => 1, 'lang_da' => 1, 'lang_nl'    => 1, 'lang_en'    => 1, | 
| 30 |  |  |  |  |  |  | 'lang_et' => 1, 'lang_fi' => 1, 'lang_fr' => 1, 'lang_de'    => 1, 'lang_el'    => 1, | 
| 31 |  |  |  |  |  |  | 'lang_iw' => 1, 'lang_hu' => 1, 'lang_is' => 1, 'lang_id'    => 1, 'lang_it'    => 1, | 
| 32 |  |  |  |  |  |  | 'lang_ja' => 1, 'lang_ko' => 1, 'lang_lv' => 1, 'lang_lt'    => 1, 'lang_no'    => 1, | 
| 33 |  |  |  |  |  |  | 'lang_pl' => 1, 'lang_pt' => 1, 'lang_ro' => 1, 'lang_ru'    => 1, 'lang_sr'    => 1, | 
| 34 |  |  |  |  |  |  | 'lang_sk' => 1, 'lang_sl' => 1, 'lang_es' => 1, 'lang_sv'    => 1, 'lang_tr'    => 1 }; | 
| 35 |  |  |  |  |  |  |  | 
| 36 |  |  |  |  |  |  | my $COUNTRY_COLLECTION = { | 
| 37 |  |  |  |  |  |  | 'countryaf' => 1, 'countryal' => 1, 'countrydz' => 1, 'countryas' => 1, 'countryad' => 1, | 
| 38 |  |  |  |  |  |  | 'countryao' => 1, 'countryai' => 1, 'countryaq' => 1, 'countryag' => 1, 'countryar' => 1, | 
| 39 |  |  |  |  |  |  | 'countryam' => 1, 'countryaw' => 1, 'countryau' => 1, 'countryat' => 1, 'countryaz' => 1, | 
| 40 |  |  |  |  |  |  | 'countrybs' => 1, 'countrybh' => 1, 'countrybd' => 1, 'countrybb' => 1, 'countryby' => 1, | 
| 41 |  |  |  |  |  |  | 'countrybe' => 1, 'countrybz' => 1, 'countrybj' => 1, 'countrybm' => 1, 'countrybt' => 1, | 
| 42 |  |  |  |  |  |  | 'countrybo' => 1, 'countryba' => 1, 'countrybw' => 1, 'countrybv' => 1, 'countrybr' => 1, | 
| 43 |  |  |  |  |  |  | 'countryio' => 1, 'countrybn' => 1, 'countrybg' => 1, 'countrybf' => 1, 'countrybi' => 1, | 
| 44 |  |  |  |  |  |  | 'countrykh' => 1, 'countrycm' => 1, 'countryca' => 1, 'countrycv' => 1, 'countryky' => 1, | 
| 45 |  |  |  |  |  |  | 'countrycf' => 1, 'countrytd' => 1, 'countrycl' => 1, 'countrycn' => 1, 'countrycx' => 1, | 
| 46 |  |  |  |  |  |  | 'countrycc' => 1, 'countryco' => 1, 'countrykm' => 1, 'countrycg' => 1, 'countrycd' => 1, | 
| 47 |  |  |  |  |  |  | 'countryck' => 1, 'countrycr' => 1, 'countryci' => 1, 'countryhr' => 1, 'countrycu' => 1, | 
| 48 |  |  |  |  |  |  | 'countrycy' => 1, 'countrycz' => 1, 'countrydk' => 1, 'countrydj' => 1, 'countrydm' => 1, | 
| 49 |  |  |  |  |  |  | 'countrydo' => 1, 'countrytp' => 1, 'countryec' => 1, 'countryeg' => 1, 'countrysv' => 1, | 
| 50 |  |  |  |  |  |  | 'countrygq' => 1, 'countryer' => 1, 'countryee' => 1, 'countryet' => 1, 'countryeu' => 1, | 
| 51 |  |  |  |  |  |  | 'countryfk' => 1, 'countryfo' => 1, 'countryfj' => 1, 'countryfi' => 1, 'countryfr' => 1, | 
| 52 |  |  |  |  |  |  | 'countryfx' => 1, 'countrygf' => 1, 'countrypf' => 1, 'countrytf' => 1, 'countryga' => 1, | 
| 53 |  |  |  |  |  |  | 'countrygm' => 1, 'countryge' => 1, 'countryde' => 1, 'countrygh' => 1, 'countrygi' => 1, | 
| 54 |  |  |  |  |  |  | 'countrygr' => 1, 'countrygl' => 1, 'countrygd' => 1, 'countrygp' => 1, 'countrygu' => 1, | 
| 55 |  |  |  |  |  |  | 'countrygt' => 1, 'countrygn' => 1, 'countrygw' => 1, 'countrygy' => 1, 'countryht' => 1, | 
| 56 |  |  |  |  |  |  | 'countryhm' => 1, 'countryva' => 1, 'countryhn' => 1, 'countryhk' => 1, 'countryhu' => 1, | 
| 57 |  |  |  |  |  |  | 'countryis' => 1, 'countryin' => 1, 'countryid' => 1, 'countryir' => 1, 'countryiq' => 1, | 
| 58 |  |  |  |  |  |  | 'countryie' => 1, 'countryil' => 1, 'countryit' => 1, 'countryjm' => 1, 'countryjp' => 1, | 
| 59 |  |  |  |  |  |  | 'countryjo' => 1, 'countrykz' => 1, 'countryke' => 1, 'countryki' => 1, 'countrykp' => 1, | 
| 60 |  |  |  |  |  |  | 'countrykr' => 1, 'countrykw' => 1, 'countrykg' => 1, 'countryla' => 1, 'countrylv' => 1, | 
| 61 |  |  |  |  |  |  | 'countrylb' => 1, 'countryls' => 1, 'countrylr' => 1, 'countryly' => 1, 'countryli' => 1, | 
| 62 |  |  |  |  |  |  | 'countrylt' => 1, 'countrylu' => 1, 'countrymo' => 1, 'countrymk' => 1, 'countrymg' => 1, | 
| 63 |  |  |  |  |  |  | 'countrymw' => 1, 'countrymy' => 1, 'countrymv' => 1, 'countryml' => 1, 'countrymt' => 1, | 
| 64 |  |  |  |  |  |  | 'countrymh' => 1, 'countrymq' => 1, 'countrymr' => 1, 'countrymu' => 1, 'countryyt' => 1, | 
| 65 |  |  |  |  |  |  | 'countrymx' => 1, 'countryfm' => 1, 'countrymd' => 1, 'countrymc' => 1, 'countrymn' => 1, | 
| 66 |  |  |  |  |  |  | 'countryms' => 1, 'countryma' => 1, 'countrymz' => 1, 'countrymm' => 1, 'countryna' => 1, | 
| 67 |  |  |  |  |  |  | 'countrynr' => 1, 'countrynp' => 1, 'countrynl' => 1, 'countryan' => 1, 'countrync' => 1, | 
| 68 |  |  |  |  |  |  | 'countrynz' => 1, 'countryni' => 1, 'countryne' => 1, 'countryng' => 1, 'countrynu' => 1, | 
| 69 |  |  |  |  |  |  | 'countrynf' => 1, 'countrymp' => 1, 'countryno' => 1, 'countryom' => 1, 'countrypk' => 1, | 
| 70 |  |  |  |  |  |  | 'countrypw' => 1, 'countryps' => 1, 'countrypa' => 1, 'countrypg' => 1, 'countrypy' => 1, | 
| 71 |  |  |  |  |  |  | 'countrype' => 1, 'countryph' => 1, 'countrypn' => 1, 'countrypl' => 1, 'countrypt' => 1, | 
| 72 |  |  |  |  |  |  | 'countrypr' => 1, 'countryqa' => 1, 'countryre' => 1, 'countryro' => 1, 'countryru' => 1, | 
| 73 |  |  |  |  |  |  | 'countryrw' => 1, 'countrysh' => 1, 'countrykn' => 1, 'countrylc' => 1, 'countrypm' => 1, | 
| 74 |  |  |  |  |  |  | 'countryvc' => 1, 'countryws' => 1, 'countrysm' => 1, 'countryst' => 1, 'countrysa' => 1, | 
| 75 |  |  |  |  |  |  | 'countrysn' => 1, 'countrycs' => 1, 'countrysc' => 1, 'countrysl' => 1, 'countrysg' => 1, | 
| 76 |  |  |  |  |  |  | 'countrysk' => 1, 'countrysi' => 1, 'countrysb' => 1, 'countryso' => 1, 'countryza' => 1, | 
| 77 |  |  |  |  |  |  | 'countrygs' => 1, 'countryes' => 1, 'countrylk' => 1, 'countrysd' => 1, 'countrysr' => 1, | 
| 78 |  |  |  |  |  |  | 'countrysj' => 1, 'countrysz' => 1, 'countryse' => 1, 'countrych' => 1, 'countrysy' => 1, | 
| 79 |  |  |  |  |  |  | 'countrytw' => 1, 'countrytj' => 1, 'countrytz' => 1, 'countryth' => 1, 'countrytg' => 1, | 
| 80 |  |  |  |  |  |  | 'countrytk' => 1, 'countryto' => 1, 'countrytt' => 1, 'countrytn' => 1, 'countrytr' => 1, | 
| 81 |  |  |  |  |  |  | 'countrytm' => 1, 'countrytc' => 1, 'countrytv' => 1, 'countryug' => 1, 'countryua' => 1, | 
| 82 |  |  |  |  |  |  | 'countryae' => 1, 'countryuk' => 1, 'countryus' => 1, 'countryum' => 1, 'countryuy' => 1, | 
| 83 |  |  |  |  |  |  | 'countryuz' => 1, 'countryvu' => 1, 'countryve' => 1, 'countryvn' => 1, 'countryvg' => 1, | 
| 84 |  |  |  |  |  |  | 'countryvi' => 1, 'countrywf' => 1, 'countryeh' => 1, 'countryye' => 1, 'countryyu' => 1, | 
| 85 |  |  |  |  |  |  | 'countryzm' => 1, 'countryzw' => 1 }; | 
| 86 |  |  |  |  |  |  |  | 
| 87 |  |  |  |  |  |  | my $COUNTRY_CODE = { | 
| 88 |  |  |  |  |  |  | 'af' => 1, 'al' => 1, 'dz' => 1, 'as' => 1, 'ad' => 1, 'ao' => 1, 'ai' => 1, 'aq' => 1, | 
| 89 |  |  |  |  |  |  | 'ag' => 1, 'ar' => 1, 'am' => 1, 'aw' => 1, 'au' => 1, 'at' => 1, 'az' => 1, 'bs' => 1, | 
| 90 |  |  |  |  |  |  | 'bh' => 1, 'bd' => 1, 'bb' => 1, 'by' => 1, 'be' => 1, 'bz' => 1, 'bj' => 1, 'bm' => 1, | 
| 91 |  |  |  |  |  |  | 'bt' => 1, 'bo' => 1, 'ba' => 1, 'bw' => 1, 'bv' => 1, 'br' => 1, 'io' => 1, 'bn' => 1, | 
| 92 |  |  |  |  |  |  | 'bg' => 1, 'bf' => 1, 'bi' => 1, 'kh' => 1, 'cm' => 1, 'ca' => 1, 'cv' => 1, 'ky' => 1, | 
| 93 |  |  |  |  |  |  | 'cf' => 1, 'td' => 1, 'cl' => 1, 'cn' => 1, 'cx' => 1, 'cc' => 1, 'co' => 1, 'km' => 1, | 
| 94 |  |  |  |  |  |  | 'cg' => 1, 'cd' => 1, 'ck' => 1, 'cr' => 1, 'ci' => 1, 'hr' => 1, 'cu' => 1, 'cy' => 1, | 
| 95 |  |  |  |  |  |  | 'cz' => 1, 'dk' => 1, 'dj' => 1, 'dm' => 1, 'do' => 1, 'ec' => 1, 'eg' => 1, 'sv' => 1, | 
| 96 |  |  |  |  |  |  | 'gq' => 1, 'er' => 1, 'ee' => 1, 'et' => 1, 'fk' => 1, 'fo' => 1, 'fj' => 1, 'fi' => 1, | 
| 97 |  |  |  |  |  |  | 'fr' => 1, 'gf' => 1, 'pf' => 1, 'tf' => 1, 'ga' => 1, 'gm' => 1, 'ge' => 1, 'de' => 1, | 
| 98 |  |  |  |  |  |  | 'gh' => 1, 'gi' => 1, 'gr' => 1, 'gl' => 1, 'gd' => 1, 'gp' => 1, 'gu' => 1, 'gt' => 1, | 
| 99 |  |  |  |  |  |  | 'gn' => 1, 'gw' => 1, 'gy' => 1, 'ht' => 1, 'hm' => 1, 'va' => 1, 'hn' => 1, 'hk' => 1, | 
| 100 |  |  |  |  |  |  | 'hu' => 1, 'is' => 1, 'in' => 1, 'id' => 1, 'ir' => 1, 'iq' => 1, 'ie' => 1, 'il' => 1, | 
| 101 |  |  |  |  |  |  | 'it' => 1, 'jm' => 1, 'jp' => 1, 'jo' => 1, 'kz' => 1, 'ke' => 1, 'ki' => 1, 'kp' => 1, | 
| 102 |  |  |  |  |  |  | 'kr' => 1, 'kw' => 1, 'kg' => 1, 'la' => 1, 'lv' => 1, 'lb' => 1, 'ls' => 1, 'lr' => 1, | 
| 103 |  |  |  |  |  |  | 'ly' => 1, 'li' => 1, 'lt' => 1, 'lu' => 1, 'mo' => 1, 'mk' => 1, 'mg' => 1, 'mw' => 1, | 
| 104 |  |  |  |  |  |  | 'my' => 1, 'mv' => 1, 'ml' => 1, 'mt' => 1, 'mh' => 1, 'mq' => 1, 'mr' => 1, 'mu' => 1, | 
| 105 |  |  |  |  |  |  | 'yt' => 1, 'mx' => 1, 'fm' => 1, 'md' => 1, 'mc' => 1, 'mn' => 1, 'ms' => 1, 'ma' => 1, | 
| 106 |  |  |  |  |  |  | 'mz' => 1, 'mm' => 1, 'na' => 1, 'nr' => 1, 'np' => 1, 'nl' => 1, 'an' => 1, 'nc' => 1, | 
| 107 |  |  |  |  |  |  | 'nz' => 1, 'ni' => 1, 'ne' => 1, 'ng' => 1, 'nu' => 1, 'nf' => 1, 'mp' => 1, 'no' => 1, | 
| 108 |  |  |  |  |  |  | 'om' => 1, 'pk' => 1, 'pw' => 1, 'ps' => 1, 'pa' => 1, 'pg' => 1, 'py' => 1, 'pe' => 1, | 
| 109 |  |  |  |  |  |  | 'ph' => 1, 'pn' => 1, 'pl' => 1, 'pt' => 1, 'pr' => 1, 'qa' => 1, 're' => 1, 'ro' => 1, | 
| 110 |  |  |  |  |  |  | 'ru' => 1, 'rw' => 1, 'sh' => 1, 'kn' => 1, 'lc' => 1, 'pm' => 1, 'vc' => 1, 'ws' => 1, | 
| 111 |  |  |  |  |  |  | 'sm' => 1, 'st' => 1, 'sa' => 1, 'sn' => 1, 'cs' => 1, 'sc' => 1, 'sl' => 1, 'sg' => 1, | 
| 112 |  |  |  |  |  |  | 'sk' => 1, 'si' => 1, 'sb' => 1, 'so' => 1, 'za' => 1, 'gs' => 1, 'es' => 1, 'lk' => 1, | 
| 113 |  |  |  |  |  |  | 'sd' => 1, 'sr' => 1, 'sj' => 1, 'sz' => 1, 'se' => 1, 'ch' => 1, 'sy' => 1, 'tw' => 1, | 
| 114 |  |  |  |  |  |  | 'tj' => 1, 'tz' => 1, 'th' => 1, 'tl' => 1, 'tg' => 1, 'tk' => 1, 'to' => 1, 'tt' => 1, | 
| 115 |  |  |  |  |  |  | 'tn' => 1, 'tr' => 1, 'tm' => 1, 'tc' => 1, 'tv' => 1, 'ug' => 1, 'ua' => 1, 'ae' => 1, | 
| 116 |  |  |  |  |  |  | 'uk' => 1, 'us' => 1, 'um' => 1, 'uy' => 1, 'uz' => 1, 'vu' => 1, 've' => 1, 'vn' => 1, | 
| 117 |  |  |  |  |  |  | 'vg' => 1, 'vi' => 1, 'wf' => 1, 'eh' => 1, 'ye' => 1, 'zm' => 1, 'zw' => 1 }; | 
| 118 |  |  |  |  |  |  |  | 
| 119 |  |  |  |  |  |  | my $INTERFACE_LANGUAGE = { | 
| 120 |  |  |  |  |  |  | 'af' => 1, 'sq' => 1, 'sm'    => 1, 'ar'    => 1, 'az'    => 1, 'eu' => 1, 'be' => 1, 'bn' => 1, 'bh' => 1, | 
| 121 |  |  |  |  |  |  | 'bs' => 1, 'bg' => 1, 'ca'    => 1, 'zh-cn' => 1, 'zh-tw' => 1, 'hr' => 1, 'cs' => 1, 'da' => 1, 'nl' => 1, | 
| 122 |  |  |  |  |  |  | 'en' => 1, 'eo' => 1, 'et'    => 1, 'fo'    => 1, 'fi'    => 1, 'fr' => 1, 'fy' => 1, 'gl' => 1, 'ka' => 1, | 
| 123 |  |  |  |  |  |  | 'de' => 1, 'el' => 1, 'gu'    => 1, 'iw'    => 1, 'hi'    => 1, 'hu' => 1, 'is' => 1, 'id' => 1, 'ia' => 1, | 
| 124 |  |  |  |  |  |  | 'ga' => 1, 'it' => 1, 'ja'    => 1, 'jw'    => 1, 'kn'    => 1, 'ko' => 1, 'la' => 1, 'lv' => 1, 'lt' => 1, | 
| 125 |  |  |  |  |  |  | 'mk' => 1, 'ms' => 1, 'ml'    => 1, 'mt'    => 1, 'mr'    => 1, 'ne' => 1, 'no' => 1, 'nn' => 1, 'oc' => 1, | 
| 126 |  |  |  |  |  |  | 'fa' => 1, 'pl' => 1, 'pt-br' => 1, 'pt-pt' => 1, 'pa'    => 1, 'ro' => 1, 'ru' => 1, 'gd' => 1, 'sr' => 1, | 
| 127 |  |  |  |  |  |  | 'si' => 1, 'sk' => 1, 'sl'    => 1, 'es'    => 1, 'su'    => 1, 'sw' => 1, 'sv' => 1, 'tl' => 1, 'ta' => 1, | 
| 128 |  |  |  |  |  |  | 'te' => 1, 'th' => 1, 'ti'    => 1, 'tr'    => 1, 'uk'    => 1, 'ur' => 1, 'uz' => 1, 'vi' => 1, 'cy' => 1, | 
| 129 |  |  |  |  |  |  | 'xh' => 1, 'zu' => 1 }; | 
| 130 |  |  |  |  |  |  |  | 
| 131 |  |  |  |  |  |  | my $FILE_TYPE = { | 
| 132 |  |  |  |  |  |  | '.swf' => 1, '.pdf'  => 1, '.ps'   => 1, '.dwf'  => 1, '.kml'  => 1, '.kmz'  => 1, '.gpx'  => 1, | 
| 133 |  |  |  |  |  |  | '.hwp' => 1, '.htm'  => 1, '.html' => 1, '.xls'  => 1, '.xlsx' => 1, '.ppt'  => 1, '.pptx' => 1, | 
| 134 |  |  |  |  |  |  | '.doc' => 1, '.docx' => 1, '.odp'  => 1, '.ods'  => 1, '.odt'  => 1, '.rtf'  => 1, '.wri'  => 1, | 
| 135 |  |  |  |  |  |  | '.svg' => 1, '.tex'  => 1, '.txt'  => 1, '.text' => 1, '.bas'  => 1, '.c'    => 1, '.cc'   => 1, | 
| 136 |  |  |  |  |  |  | '.cpp' => 1, '.cxx'  => 1, '.h'    => 1, '.hpp'  => 1, '.cs'   => 1, '.java' => 1, '.pl'   => 1, | 
| 137 |  |  |  |  |  |  | '.py'  => 1, '.wml'  => 1, '.wap'  => 1, '.xml'  => 1 }; | 
| 138 |  |  |  |  |  |  |  | 
| 139 |  |  |  |  |  |  | my $DOMINANT_COLOR = { | 
| 140 |  |  |  |  |  |  | 'black'  => 1, 'blue'   => 1, 'brown'  => 1,  'gray'   => 1,  'green'  => 1,  'pink'   => 1, | 
| 141 |  |  |  |  |  |  | 'purple' => 1, 'teal'   => 1, 'white'  => 1,  'yellow' => 1 }; | 
| 142 |  |  |  |  |  |  |  | 
| 143 |  |  |  |  |  |  | my $COLOR_TYPE    = { 'color' => 1, 'gray'  => 1, 'mono'  => 1 }; | 
| 144 |  |  |  |  |  |  |  | 
| 145 |  |  |  |  |  |  | my $IMAGE_SIZE    = { 'huge' => 1, 'icon' => 1, 'large' => 1, 'medium' => 1, 'small' => 1, 'xlarge' => 1, 'xxlarge'=> 1 }; | 
| 146 |  |  |  |  |  |  |  | 
| 147 |  |  |  |  |  |  | my $IMAGE_TYPE    = { 'clipart' => 1, 'face' => 1, 'lineart' => 1, 'news' => 1, 'photo' => 1 }; | 
| 148 |  |  |  |  |  |  |  | 
| 149 |  |  |  |  |  |  | my $RIGHTS        = { 'cc_publicdomain'  => 1, 'cc_attribute'  => 1, 'cc_sharealike'  => 1, 'cc_noncommercial' => 1, 'cc_nonderived' => 1 }; | 
| 150 |  |  |  |  |  |  |  | 
| 151 |  |  |  |  |  |  | my $SEARCH_TYPE   = { 'image' => 1 }; | 
| 152 |  |  |  |  |  |  |  | 
| 153 |  |  |  |  |  |  | my $SEARCH_FILTER = { 'e' => 1, 'i' => 1 }; | 
| 154 |  |  |  |  |  |  |  | 
| 155 |  |  |  |  |  |  | my $SAFETY_LEVEL  = { 'off' => 1, 'medium' => 1, 'high' => 1 }; | 
| 156 |  |  |  |  |  |  |  | 
| 157 |  |  |  |  |  |  |  | 
| 158 | 2 |  | 33 | 2 | 0 | 30 | sub check_int                { return defined ($_[0]) && $_[0] =~ /^\d+$/                      }; | 
| 159 | 0 |  |  | 0 | 0 | 0 | sub check_str                { return !check_int($_[0])                                        }; | 
| 160 | 0 |  |  | 0 | 0 | 0 | sub check_language           { return exists($LANGUAGE->{lc($_[0])})                           }; | 
| 161 | 0 |  |  | 0 | 0 | 0 | sub check_country_collection { return exists($COUNTRY_COLLECTION->{lc($_[0])})                 }; | 
| 162 | 0 |  |  | 0 | 0 | 0 | sub check_file_type          { return exists($FILE_TYPE->{lc($_[0])})                          }; | 
| 163 | 0 |  |  | 0 | 0 | 0 | sub check_country_code       { return exists($COUNTRY_CODE->{lc($_[0])})                       }; | 
| 164 | 0 |  |  | 0 | 0 | 0 | sub check_interface_language { return exists($INTERFACE_LANGUAGE->{lc($_[0])})                 }; | 
| 165 | 0 |  |  | 0 | 0 | 0 | sub check_color_type         { return exists($COLOR_TYPE->{lc($_[0])})                         }; | 
| 166 | 0 |  |  | 0 | 0 | 0 | sub check_dominant_color     { return exists($DOMINANT_COLOR->{lc($_[0])})                     }; | 
| 167 | 0 |  |  | 0 | 0 | 0 | sub check_image_size         { return exists($IMAGE_SIZE->{lc($_[0])})                         }; | 
| 168 | 0 |  |  | 0 | 0 | 0 | sub check_image_type         { return exists($IMAGE_TYPE->{lc($_[0])})                         }; | 
| 169 | 1 |  |  | 1 | 0 | 14 | sub check_rights             { return exists($RIGHTS->{lc($_[0])})                             }; | 
| 170 | 0 |  |  | 0 | 0 | 0 | sub check_search_type        { return exists($SEARCH_TYPE->{lc($_[0])})                        }; | 
| 171 | 0 |  |  | 0 | 0 | 0 | sub check_search_filter      { return exists($SEARCH_FILTER->{lc($_[0])})                      }; | 
| 172 | 5 |  |  | 5 | 0 | 27 | sub check_safety_level       { return exists($SAFETY_LEVEL->{lc($_[0])})                       }; | 
| 173 | 2 |  |  | 2 | 0 | 19 | sub check_date_restrict      { return ($_[0] =~ /^[d|w|m|y]\d+$/i)                             }; | 
| 174 | 4 |  | 66 | 4 | 0 | 37 | sub check_start_index        { return ($_[0] =~ /^\d+$/) && ($_[0] >= 1)                       }; | 
| 175 | 7 |  | 100 | 7 | 0 | 80 | sub check_result_count       { return ($_[0] =~ /^\d{1,2}$/) && ($_[0] >= 1) && ($_[0] <= 10)  }; | 
| 176 |  |  |  |  |  |  |  | 
| 177 |  |  |  |  |  |  | our $FIELDS = { | 
| 178 |  |  |  |  |  |  | 'filter'           => { required => 0, type => 'd' }, | 
| 179 |  |  |  |  |  |  | 'prettyprint'      => { required => 0, type => 's' }, | 
| 180 |  |  |  |  |  |  | 'c2coff'           => { required => 0, type => 'd' }, | 
| 181 |  |  |  |  |  |  | 'callback'         => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 182 |  |  |  |  |  |  | 'fields'           => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 183 |  |  |  |  |  |  | 'quotaUser'        => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 184 |  |  |  |  |  |  | 'userIp'           => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 185 |  |  |  |  |  |  | 'cr'               => { required => 0, check => sub { check_country_collection(@_) }, type => 's' }, | 
| 186 |  |  |  |  |  |  | #'cref'             => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 187 |  |  |  |  |  |  | #'cx'               => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 188 |  |  |  |  |  |  | 'dateRestrict'     => { required => 0, check => sub { check_date_restrict(@_)      }, type => 's' }, | 
| 189 |  |  |  |  |  |  | 'exactTerms'       => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 190 |  |  |  |  |  |  | 'excludeTerms'     => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 191 |  |  |  |  |  |  | 'fileType'         => { required => 0, check => sub { check_file_type(@_)          }, type => 's' }, | 
| 192 |  |  |  |  |  |  | 'gl'               => { required => 0, check => sub { check_country_code(@_)       }, type => 's' }, | 
| 193 |  |  |  |  |  |  | 'googlehost'       => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 194 |  |  |  |  |  |  | 'highRange'        => { required => 0, check => sub { check_int(@_)                }, type => 'd' }, | 
| 195 |  |  |  |  |  |  | 'hl'               => { required => 0, check => sub { check_interface_language(@_) }, type => 's' }, | 
| 196 |  |  |  |  |  |  | 'hq'               => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 197 |  |  |  |  |  |  | 'imgColorType'     => { required => 0, check => sub { check_color_type(@_)         }, type => 's' }, | 
| 198 |  |  |  |  |  |  | 'imgDominantColor' => { required => 0, check => sub { check_dominant_color(@_)     }, type => 's' }, | 
| 199 |  |  |  |  |  |  | 'imgSize'          => { required => 0, check => sub { check_image_size(@_)         }, type => 's' }, | 
| 200 |  |  |  |  |  |  | 'imgType'          => { required => 0, check => sub { check_image_type(@_)         }, type => 's' }, | 
| 201 |  |  |  |  |  |  | 'linkSite'         => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 202 |  |  |  |  |  |  | 'lowRange'         => { required => 0, check => sub { check_int(@_)                }, type => 'd' }, | 
| 203 |  |  |  |  |  |  | 'lr'               => { required => 0, check => sub { check_language(@_)           }, type => 's' }, | 
| 204 |  |  |  |  |  |  | 'num'              => { required => 0, check => sub { check_result_count(@_)       }, type => 'd' }, | 
| 205 |  |  |  |  |  |  | 'orTerms'          => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 206 |  |  |  |  |  |  | 'relatedSite'      => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 207 |  |  |  |  |  |  | 'rights'           => { required => 0, check => sub { check_rights(@_)             }, type => 's' }, | 
| 208 |  |  |  |  |  |  | 'safe'             => { required => 0, check => sub { check_safety_level(@_)       }, type => 's' }, | 
| 209 |  |  |  |  |  |  | 'searchType'       => { required => 0, check => sub { check_search_type(@_)        }, type => 's' }, | 
| 210 |  |  |  |  |  |  | 'siteSearch'       => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 211 |  |  |  |  |  |  | 'siteSearchFilter' => { required => 0, check => sub { check_search_filter(@_)      }, type => 's' }, | 
| 212 |  |  |  |  |  |  | 'sort'             => { required => 0, check => sub { check_str(@_)                }, type => 's' }, | 
| 213 |  |  |  |  |  |  | 'start'            => { required => 0, check => sub { check_start_index(@_)        }, type => 'd' }, | 
| 214 |  |  |  |  |  |  | }; | 
| 215 |  |  |  |  |  |  |  | 
| 216 |  |  |  |  |  |  | =head1 AUTHOR | 
| 217 |  |  |  |  |  |  |  | 
| 218 |  |  |  |  |  |  | Mohammad S Anwar, C<<  >> | 
| 219 |  |  |  |  |  |  |  | 
| 220 |  |  |  |  |  |  | =head1 REPOSITORY | 
| 221 |  |  |  |  |  |  |  | 
| 222 |  |  |  |  |  |  | L | 
| 223 |  |  |  |  |  |  |  | 
| 224 |  |  |  |  |  |  | =head1 CONTRIBUTORS | 
| 225 |  |  |  |  |  |  |  | 
| 226 |  |  |  |  |  |  | David Kitcher-Jones (m4ddav3) | 
| 227 |  |  |  |  |  |  |  | 
| 228 |  |  |  |  |  |  | =head1 BUGS | 
| 229 |  |  |  |  |  |  |  | 
| 230 |  |  |  |  |  |  | Please  report  any  bugs or feature requests to C | 
| 231 |  |  |  |  |  |  | rt.cpan.org>, or through the web interface at L. | 
| 232 |  |  |  |  |  |  | I will be notified, and then you'll automatically be notified of progress on your | 
| 233 |  |  |  |  |  |  | bug as I make changes. | 
| 234 |  |  |  |  |  |  |  | 
| 235 |  |  |  |  |  |  | =head1 SUPPORT | 
| 236 |  |  |  |  |  |  |  | 
| 237 |  |  |  |  |  |  | You can find documentation for this module with the perldoc command. | 
| 238 |  |  |  |  |  |  |  | 
| 239 |  |  |  |  |  |  | perldoc WWW::Google::CustomSearch::Params | 
| 240 |  |  |  |  |  |  |  | 
| 241 |  |  |  |  |  |  | You can also look for information at: | 
| 242 |  |  |  |  |  |  |  | 
| 243 |  |  |  |  |  |  | =over 4 | 
| 244 |  |  |  |  |  |  |  | 
| 245 |  |  |  |  |  |  | =item * RT: CPAN's request tracker (report bugs here) | 
| 246 |  |  |  |  |  |  |  | 
| 247 |  |  |  |  |  |  | L | 
| 248 |  |  |  |  |  |  |  | 
| 249 |  |  |  |  |  |  | =item * AnnoCPAN: Annotated CPAN documentation | 
| 250 |  |  |  |  |  |  |  | 
| 251 |  |  |  |  |  |  | L | 
| 252 |  |  |  |  |  |  |  | 
| 253 |  |  |  |  |  |  | =item * CPAN Ratings | 
| 254 |  |  |  |  |  |  |  | 
| 255 |  |  |  |  |  |  | L | 
| 256 |  |  |  |  |  |  |  | 
| 257 |  |  |  |  |  |  | =item * Search CPAN | 
| 258 |  |  |  |  |  |  |  | 
| 259 |  |  |  |  |  |  | L | 
| 260 |  |  |  |  |  |  |  | 
| 261 |  |  |  |  |  |  | =back | 
| 262 |  |  |  |  |  |  |  | 
| 263 |  |  |  |  |  |  | =head1 LICENSE AND COPYRIGHT | 
| 264 |  |  |  |  |  |  |  | 
| 265 |  |  |  |  |  |  | Copyright (C) 2011 - 2015 Mohammad S Anwar. | 
| 266 |  |  |  |  |  |  |  | 
| 267 |  |  |  |  |  |  | This program  is  free software; you can redistribute it and / or modify it under | 
| 268 |  |  |  |  |  |  | the  terms  of the the Artistic License (2.0). You may obtain a  copy of the full | 
| 269 |  |  |  |  |  |  | license at: | 
| 270 |  |  |  |  |  |  |  | 
| 271 |  |  |  |  |  |  | L | 
| 272 |  |  |  |  |  |  |  | 
| 273 |  |  |  |  |  |  | Any  use,  modification, and distribution of the Standard or Modified Versions is | 
| 274 |  |  |  |  |  |  | governed by this Artistic License.By using, modifying or distributing the Package, | 
| 275 |  |  |  |  |  |  | you accept this license. Do not use, modify, or distribute the Package, if you do | 
| 276 |  |  |  |  |  |  | not accept this license. | 
| 277 |  |  |  |  |  |  |  | 
| 278 |  |  |  |  |  |  | If your Modified Version has been derived from a Modified Version made by someone | 
| 279 |  |  |  |  |  |  | other than you,you are nevertheless required to ensure that your Modified Version | 
| 280 |  |  |  |  |  |  | complies with the requirements of this license. | 
| 281 |  |  |  |  |  |  |  | 
| 282 |  |  |  |  |  |  | This  license  does  not grant you the right to use any trademark,  service mark, | 
| 283 |  |  |  |  |  |  | tradename, or logo of the Copyright Holder. | 
| 284 |  |  |  |  |  |  |  | 
| 285 |  |  |  |  |  |  | This license includes the non-exclusive, worldwide, free-of-charge patent license | 
| 286 |  |  |  |  |  |  | to make,  have made, use,  offer to sell, sell, import and otherwise transfer the | 
| 287 |  |  |  |  |  |  | Package with respect to any patent claims licensable by the Copyright Holder that | 
| 288 |  |  |  |  |  |  | are  necessarily  infringed  by  the  Package. If you institute patent litigation | 
| 289 |  |  |  |  |  |  | (including  a  cross-claim  or  counterclaim) against any party alleging that the | 
| 290 |  |  |  |  |  |  | Package constitutes direct or contributory patent infringement,then this Artistic | 
| 291 |  |  |  |  |  |  | License to you shall terminate on the date that such litigation is filed. | 
| 292 |  |  |  |  |  |  |  | 
| 293 |  |  |  |  |  |  | Disclaimer  of  Warranty:  THE  PACKAGE  IS  PROVIDED BY THE COPYRIGHT HOLDER AND | 
| 294 |  |  |  |  |  |  | CONTRIBUTORS  "AS IS'  AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED | 
| 295 |  |  |  |  |  |  | WARRANTIES    OF   MERCHANTABILITY,   FITNESS   FOR   A   PARTICULAR  PURPOSE, OR | 
| 296 |  |  |  |  |  |  | NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS | 
| 297 |  |  |  |  |  |  | REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, | 
| 298 |  |  |  |  |  |  | INDIRECT, INCIDENTAL,  OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE | 
| 299 |  |  |  |  |  |  | OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| 300 |  |  |  |  |  |  |  | 
| 301 |  |  |  |  |  |  | =cut | 
| 302 |  |  |  |  |  |  |  | 
| 303 |  |  |  |  |  |  | 1; # End of WWW::Google::CustomSearch::Params |