PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /home/.cpanm/work/1729881454.851640/HDB-1.05/blib/man3
Viewing File: /home/.cpanm/work/1729881454.851640/HDB-1.05/blib/man3/HDB::CMDS.3pm
.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "HDB::CMDS 3" .TH HDB::CMDS 3 "2004-12-14" "perl v5.26.3" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" HDB::CMDS \- Hybrid DataBase Commands .SH "DESCRIPTION" .IX Header "DESCRIPTION" This are the commands/methods to access/manage the databases. .SH "select" .IX Header "select" Make a \s-1SQL\s0 select query. .PP Example: .PP .Vb 1 \& my @sel = $HDB\->select(\*(Aqusers\*(Aq , \*(Aqname =~ joe\*(Aq , \*(Aq@%\*(Aq) ; ## table , where , return \& \& ## ... or ... \& \& my @sel = $HDB\->select(\*(Aqusers\*(Aq , \*(Aqname =~ joe\*(Aq , cols => \*(Aqname,user,id\*(Aq , limit => 1 , \*(Aq@%\*(Aq) ; \& \& ## ... or ... \& \& my @sel = $HDB\->select( \& table => \*(Aqusers\*(Aq , ## Need to start with \*(Aqtable\*(Aq to paste a full HASH of arguments! \& where => \*(Aqname == joe\*(Aq , \& col => \*(Aqname, user , id\*(Aq , \& limit => \*(Aq1\*(Aq , \& sort => \*(Aqid\*(Aq , \& group => \*(Aqname\*(Aq , \& cache => \*(Aq0\*(Aq , \& return => \*(Aq@%\*(Aq , \& ) ; .Ve .PP \&\fBArguments:\fR .IP "\s-1TABLE\s0" 10 .IX Item "TABLE" The table name. .IP "\s-1WHERE\s0" 10 .IX Item "WHERE" Where condintion. See the topic '\s-1WHERE\s0' for format. .IP "\s-1COL\s0" 10 .IX Item "COL" Columns to return and order, separated by ','. .Sp Example: .Sp .Vb 4 \& col => \*(Aqcity\*(Aq # Return only the column city. \& col => \*(Aqcity,state\*(Aq # Return the column city and state in this order. \& col => \*(Aq>ID\*(Aq # Return the max ID. \& col => \*(Aq<ID\*(Aq # Return the min ID. .Ve .IP "\s-1LIMIT\s0" 10 .IX Item "LIMIT" Limit of return or/and start of returns. .Sp Example: .Sp .Vb 3 \& limit => \*(Aq10\*(Aq # Make the limit of returns to 10. \& limit => \*(Aq10,2\*(Aq # Make the limit of returns to 10 and the returns will start from 2. \& limit => \*(Aq0,2\*(Aq # Returns will start from 2. .Ve .IP "\s-1SORT\s0" 10 .IX Item "SORT" Column to use for sort (order). If > or < is used in the beggin set the ascending or descending sort. .Sp Example: .Sp .Vb 3 \& sort => \*(AqID\*(Aq # Sort by ID in the ascending order. \& sort => \*(Aq>ID\*(Aq # Sort by ID in the ascending order. \& sort => \*(Aq<ID\*(Aq # Sort by ID in the *descending order. .Ve .IP "\s-1GROUP\s0" 10 .IX Item "GROUP" Column(s) to group. .Sp Example: .Sp .Vb 2 \& group => \*(Aqcity\*(Aq # Group only the col city \& group => \*(Aqcity , state\*(Aq # Group the col city and state. .Ve .IP "\s-1CACHE\s0" 10 .IX Item "CACHE" Turn on/off the cache of sth and col names. .IP "\s-1RETURN\s0" 10 .IX Item "RETURN" The return type. See the topic \*(L"\s-1RETURN\*(R"\s0 for format. .SH "insert ( table , data )" .IX Header "insert ( table , data )" Insert data inside a table. .PP You can call it sending the data by column order or hash (by column name): .PP .Vb 1 \& # Cols of table users: name , email , id \& \& $HDB\->insert( \*(Aqusers\*(Aq , \*(Aqjoe\*(Aq , \*(Aqjoe@mail.com\*(Aq , 1 ); \& \& # Or with a hash: \& \& $HDB\->insert( \*(Aqusers\*(Aq , { \& \*(Aqname\*(Aq => \*(Aqjoe\*(Aq , \& \*(Aqemail\*(Aq => \*(Aqjoe@mail.com\*(Aq , \& \*(Aqid\*(Aq => 1 , \& } ); .Ve .SH "update ( table , where , data )" .IX Header "update ( table , where , data )" Update a table. The data need to be a \s-1HASH\s0 or a ref to a \s-1HASH:\s0 .PP .Vb 4 \& $HDB\->update( \*(Aqusers\*(Aq , \*(Aquser == joe\*(Aq , { \& name => \*(AqJoe Tribiany\*(Aq , \& email => \*(Aqfoo@mail.com\*(Aq , \& } ); \& \& # Or: \& \& $HDB\->update( \*(Aqusers\*(Aq , \*(Aquser == joe\*(Aq , name => \*(AqJoe Tribiany\*(Aq , email => \*(Aqfoo@mail.com\*(Aq ); .Ve .SH "delete ( table , where )" .IX Header "delete ( table , where )" Delete entrys of a table: .PP .Vb 1 \& $HDB\->delete( \*(Aqusers\*(Aq , \*(Aquser == joe\*(Aq ); .Ve .SH "create ( table , columns )" .IX Header "create ( table , columns )" Create a new tables. You send the columns in the order that they will be in the table, and the \s-1TYPES\s0 are based in the size: .PP .Vb 10 \& $HDB\->create( \*(Aqusers\*(Aq , \& user => 100 , # A col for strings, with the max size 100. \& name => 150 , # A col for strings, with the max size 150. \& more => 4096 , # A col for strings, with the max size 4Kb. \& more2 => 1048576 # A col for strings, with the max size 1Mb. \& more3 => \*(Aq*\*(Aq # A col for strings. \& age => \*(Aqint(200)\*(Aq , # A col for numbers, with the max number 200. \& numb => \*(Aqfloat\*(Aq , # A floating point with normal precision. \& numb1 => \*(Aqdouble\*(Aq , # A floating point with big precision. \& numb2 => \*(Aqfloat(10)\*(Aq , # A floating point with precision 10. \& numb3 => \*(Aq+float(10,4)\*(Aq , # for floating points. This will be unsigned (only positive values). \& # 10 is the max digit size (including decimal). \& # 4 is the precision (number digits after decimal point). \& adm => bool , # For boolean entrys. \& ); \& \& ** FLOAT is not enable in any database, and can be changed to INTEGER. The precision and UNSIGNED options are not enabled for all too. \& ** Use FLOAT for normal precision, and DOUBLE for big precision for portable way. .Ve .PP In MySQL the cols type will be: .PP .Vb 10 \& $HDB\->create( \*(Aqusers\*(Aq , \& user => 100 , # VARCHAR(100) \& name => 150 , # VARCHAR(150) \& more => 4096 , # TEXT \& more2 => 1048576 # MEDIUMTEXT \& more3 => \*(Aq*\*(Aq # TEXT \& age => \*(Aqint(200)\*(Aq , # SMALLINT \& numb => \*(Aqfloat\*(Aq , # FLOAT \& numb1 => \*(Aqdouble\*(Aq , # DOUBLE \& numb2 => \*(Aqfloat(10)\*(Aq , # FLOAT(10) \& numb3 => \*(Aq+float(10,4)\*(Aq , # FLOAT(10,4) UNSIGNED \& adm => bool , # BOOLEAN \& ); .Ve .PP In SQLite the cols type will be: .PP .Vb 10 \& $HDB\->create( \*(Aqusers\*(Aq , \& user => 100 , # VARCHAR(100) \& name => 150 , # VARCHAR(150) \& more => 4096 , # TEXT \& more2 => 1048576 # TEXT \& more3 => \*(Aq*\*(Aq # TEXT \& age => \*(Aqint(200)\*(Aq , # INTEGER \& numb => \*(Aqfloat\*(Aq , # FLOAT \& numb1 => \*(Aqdouble\*(Aq , # FLOAT \& numb2 => \*(Aqfloat(10)\*(Aq , # FLOAT \& numb3 => \*(Aq+float(10,4)\*(Aq , # FLOAT \& adm => bool , # BOOLEAN \& ); .Ve .PP \&\fB** Note that the column \s-1ID\s0 will be always created and will be \s-1AUTOINCREMENT,\s0 unless you set the type by your self.\fR .PP You can use predefined col names (templates) for the columns. This is good if you don't want to think in the size that the type of data can have: .PP .Vb 5 \& $HDB\->create( \*(Aqusers\*(Aq , \& user => 100 , \& [\*(Aqemail\*(Aq] , # The predefined col name. Same as: email => 50 \& name => 150 , \& ); .Ve .SH "drop ( table )" .IX Header "drop ( table )" Drop (remove) a table: .PP .Vb 1 \& $HDB\->drop( \*(Aqusers\*(Aq ); .Ve .SH "cmd ( SQL , RETURN )" .IX Header "cmd ( SQL , RETURN )" Send a \s-1SQL\s0 query to the database. The return will be in the format of the argument \s-1RETURN:\s0 .PP .Vb 1 \& my @sel = $HDB\->cmd(\*(Aqselect * from users\*(Aq,\*(Aq@%\*(Aq); .Ve .SH "dump_table" .IX Header "dump_table" Return a string with the table dumped. .SH "tables" .IX Header "tables" Return an \s-1ARRAY\s0 with tables of the database. .SH "table_exists ( TABLE )" .IX Header "table_exists ( TABLE )" Return \s-1TRUE\s0 if \s-1TABLE\s0 exists. .SH "tables_hash" .IX Header "tables_hash" Same as \fBtables()\fR, but return a \s-1HASH,\s0 with the tables as keys and 1 as values. Good if you want to make: if ($tables{users}) {...} .SH "table_columns" .IX Header "table_columns" Return a \s-1HASH\s0 with the columns and respective type (based in the \s-1DB\s0 type). .SH "names" .IX Header "names" Return an \s-1ARRAY\s0 with the names of the columns in the table, with the respective order. .SH "sql" .IX Header "sql" Return the last \s-1SQL\s0 command sent to the \s-1DB.\s0 .SH "flush_cache" .IX Header "flush_cache" Clean the \s-1HDB\s0 cache (in the \s-1HDB\s0 object, not in the database). .SH "flush_table_cache" .IX Header "flush_table_cache" Clean the \s-1HDB\s0 cache of a table (in the \s-1HDB\s0 object, not in the database). .SH "get_type" .IX Header "get_type" Convert the \s-1HDB\s0 type to the database type: .PP .Vb 1 \& my $db_col_type = $HDB\->get_type( 1000 ); \& \& ... \& \& my $db_col_type = $HDB\->get_type( \*(Aqint(200)\*(Aq ); .Ve .SH "default_types" .IX Header "default_types" Return a list of the default types of \s-1HDB.\s0 .SH "predefined_columns" .IX Header "predefined_columns" Return a \s-1HASH\s0 with the predefined columns and sets. .SH "default_mod" .IX Header "default_mod" Return a \s-1HASH\s0 with the \s-1HDB::MOD\s0 installed by default in this version. .PP The \s-1HASH:\s0 .PP .Vb 2 \& keys => full name. \& values => id for HDB. .Ve .SH "RETURN" .IX Header "RETURN" Commands like select has a return argument, that will tell how to format the results and the type of the variable. .PP The return has 2 parts. .PP First, the type of the variable (@|$): .PP .Vb 2 \& @ >> Will return an array. \& $ >> Will return the first line of the results (row), or the parsed reference of the 2nd part. \& \& ** If the first part is omitted, @ will be used. .Ve .PP Second, the format ($|@|%): .PP .Vb 3 \& $ >> The rows will have the columns separated by \*(Aq::\*(Aq, like: joe::joe@mail.com::1 \& @ >> The cols of each row will be inside an ARRAY. \& % >> The cols of each row will be inside a HASH. .Ve .PP Examples: .PP .Vb 3 \& return => \*(Aq@$\*(Aq # Will return an ARRAY, with the cols in each line of the array separated by \*(Aq::\*(Aq. \& return => \*(Aq@@\*(Aq # Will return an ARRAY of ARRAYS (with the cols in the SUB\-ARRAY). \& return => \*(Aq@%\*(Aq # Will return an ARRAY of HASHES (with the cols in the HASH). \& \& return => \*(Aq$$\*(Aq # Will return the cols of the first result (row) separated by \*(Aq::\*(Aq. (return a sinlge SCALAR) \& return => \*(Aq$@\*(Aq # Will return the cols of the first result (row) inside an ARRAY. (return a sinlge ARRAY) \& return => \*(Aq$%\*(Aq # Will return the cols of the first result (row) inside a HASH. (return a sinlge HASH) \& \& return => \*(Aq$$@\*(Aq # Special case: Parse the encoded ref of the first col in the first row. See HDB::Encode. \& return => \*(Aq$$%\*(Aq # Same as $$@. \& \& return => \*(Aq<$>\*(Aq # Special: Parse sth row by row, returning a SCALAR, with the columns separated by \*(Aq::\*(Aq. \& return => \*(Aq<@>\*(Aq # Special: Parse sth row by row, returning a ARRAY with the values of the columns. \& return => \*(Aq<%>\*(Aq # Special: Parse sth row by row, returning a HASH of columns and values. \& \& return => \*(Aq$\*(Aq # Like @$ \& return => \*(Aq@\*(Aq # Like @@ \& return => \*(Aq%\*(Aq # Like @% \& \& return => \*(Aq%%\*(Aq # Like $% .Ve .PP If you want the list of columns returned, put \s-1NAMES\s0 in the begin of return: .PP .Vb 1 \& return => \*(AqNAMES,@@\*(Aq # Will return the reference to an ARRAY with the columns names and the ARRAY of ARRAYS. \& \& ## USAGE: \& my ($cols_names , @sel) = $HDB\->select(\*(Aqusers\*(Aq,\*(AqNAMES,@%\*(Aq) ; \& my @cols_names = @$cols_names ; .Ve .PP The best way to think in the \fI\s-1RETURN\s0\fR type is to think in what variable type will receive the result, and in what type you want the informations inside the result. .PP .Vb 3 \& ## For an ARRAY receiveing and for informations in HASH type: @% \& my @sel = $HDB\->select(\*(Aqusers\*(Aq,\*(Aq@%\*(Aq) ; \& print "$sel[0]{name}\en" ; \& \& ## For a SCALAR receiveing and for informations in ARRAY type: $@ \& my $name = $HDB\->select(\*(Aqusers\*(Aq, col => \*(Aqname\*(Aq , \*(Aq$@\*(Aq) ; \& \& ## For a HASH receiveing and for informations in HASH type: %% \& my %user = $HDB\->select(\*(Aqusers\*(Aq, "id == 1" \*(Aq%%\*(Aq) ; ## return only 1 row! \& print "$user{name}\en" ; .Ve .SS "\s-1RETURN USAGE\s0 (Code Examples):" .IX Subsection "RETURN USAGE (Code Examples):" .Vb 1 \& my @sel = $HDB\->select( table => users , return => \*(Aq@$\*(Aq ); \& \& foreach my $sel_i ( @sel ) { \& my @cols = split("::" , $sel_i) ; \& ... \& } \& \& ########################################################## \& \& my @sel = $HDB\->select( table => users , return => \*(Aq@@\*(Aq ); \& \& foreach my $sel_i ( @sel ) { \& my @cols = @$sel_i ; \& ... \& } \& \& ########################################################## \& \& my @sel = $HDB\->select( table => users , return => \*(Aq@%\*(Aq ); \& \& foreach my $sel_i ( @sel ) { \& my %cols = %$sel_i ; \& ... \& } \& \& ########################################################## \& \& my ($names,@sel) = $HDB\->select( table => users , return => \*(AqNAMES,@%\*(Aq ); \& my @names = @$names ; \& \& foreach my $sel_i ( @sel ) { \& my %cols = %$sel_i ; \& ... \& } \& \& ########################################################## \& \& my %hash = $HDB\->select( table => users , col => \*(Aqencoded\*(Aq , return => \*(Aq$$@\*(Aq ); \& \& foreach my $Key ( keys %hash ) { \& my $Value = $hash{$Key} ; \& print "$Key = $Value\en" ; \& } \& \& ########################################################## \& \& my $hdbhandle = $HDB\->select( table => users , return => \*(Aq<$>\*(Aq ); \& \& while( my $row = <$hdbhandle> ) { \& my @cols = split("::" , $row) ; \& ... \& } \& \& ########################################################## \& \& my $hdbhandle = $HDB\->select( table => users , return => \*(Aq<@>\*(Aq ); \& \& while( my @cols = <$hdbhandle> ) { \& ... \& } \& \& ########################################################## \& \& my $hdbhandle = $HDB\->select( table => users , return => \*(Aq<%>\*(Aq ); \& \& while( my %cols = <$hdbhandle> ) { \& foreach my $Key ( keys %cols ) { print "$Key = $cols{$Key}\en" ;} \& ... \& } \& \& ########################################################## \& \& my $sel_row_0 = $HDB\->select( table => users , return => \*(Aq$$\*(Aq ); \& my @cols = split("::" , $sel_row_0) ; \& \& ########################################################## \& \& my @cols = $HDB\->select( table => users , return => \*(Aq$@\*(Aq ); ## Return ROW 0. \& \& ########################################################## \& \& my %cols = $HDB\->select( table => users , return => \*(Aq$%\*(Aq ); ## Return ROW 0. .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" \&\s-1HDB\s0, HDB::Encode, HDB::sqlite, HDB::mysql. .SH "AUTHOR" .IX Header "AUTHOR" Graciliano M. P. <gm@virtuasites.com.br> .SH "COPYRIGHT" .IX Header "COPYRIGHT" This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.