useDBI;$dbh=DBI->connect("dbi:SQLite:dbname=/Users/gnat/salaries.sqlt","","",{RaiseError=>1,AutoCommit=>1});$dbh->do("UPDATEsalariesSETsalary=2*salaryWHEREname='Nat'");$sth=$dbh->SQLite定義的數(shù)據(jù)庫里面沒有數(shù)據(jù)類型這個概念。不管你在創(chuàng)建一個表的時候指定的是什么數(shù)據(jù)類型,以后你可以在其中放入任何類型的數(shù)值(包括字符型,數(shù)字型,日期型,二進制對象/blob)。實際上,創(chuàng)建表的時候你甚至可以不指定數(shù)據(jù)類型。CREATETABLEpeople(id,name,birth_year);SQLite只有在要比較數(shù)據(jù)的時候,如用WHERE子句或?qū)δ承┲颠M行排序,才會考慮數(shù)據(jù)類型。SQLite在比較數(shù)據(jù)的時候,只考慮被比較對象的類型,而不管被比較對象所在列的其它數(shù)據(jù)是什么類型。像Perl一樣,SQLite只能識別字符型和數(shù)字型。兩個數(shù)值總是以浮點類型進行比較,兩個字符串直接比較。當不同類型的數(shù)據(jù)比較的時候,數(shù)字總是比字符小。只有一種情況SQLite才會關心你為某一列申明的數(shù)據(jù)類型(需要創(chuàng)建一個值自增加的列的時候)。你可以把這列的類型指定為:“INTEGER PRIMARYKEY”。 CREATETABLEpeople(idINTEGERPRIMARYKEY,name,birth_year);例子14-6說明這一切是怎么工作的例14-6整形主鍵#!/usr/bin/perl-w#Word)=@$row;print"$wordhasid$id/n";}
SQLite支持8位長的字符編碼,但是不識別ASCII中的 NULL符“/0”。唯一的變通方法就是在你存儲數(shù)據(jù)之前自行編碼,然后在取出數(shù)據(jù)之后再手工解碼,就象 URL編碼或Base64編碼方式一樣。這甚至可以用在 BLOB字段里面。 參照:“Executingan
SQLCommandUsing DBI” CPAN上 DBD::SQLite模塊的正式文檔。它在SQLite的主頁上photoshopped/nat.jpg',Filename=>'gnat-face.jpg');
$msg->attach(Type=>'TEXT',
Data=>'Ihopeyoucanusethis!');最后,發(fā)送這份郵件,發(fā)送它的方法是可選的:
$msg->send();#默認的方法是用sendmail規(guī)則發(fā)送#指定其它的方法$msg->send('smtp','mailserver.example.com');
$msg=MIME::Lite->new('X-Song-Playing:'=>'NatchezTrace');
然而,當參數(shù)名代表的郵件頭在表18-2中時,后面可以不加冒號。下表中*代表通配符,例如Content-*可以代表Content-Type和Content-ID但是不代表Dis-Content
表18-2:
表18-3:
這兒有幾個有用的附件編碼類型:TEXT代表text/plain,為Type的默認值;BINARY是application/octet-stream的縮寫;multipart/mixed表明郵件有附件;application/msword表明附件為微軟的Word文檔;application/vnd.ms-Excel表明附件為微軟的Excel文檔;application/pdf表明附件為
#timeoutof30seconds$msg->send("smtp","mail.example.com",Timeout=>30);如果你想創(chuàng)建多個
MIME::Lite->send("smtp","mail.example.com");$msg=MIME::Lite->new(opts);#...$msg->send();#sendsusingSMTP
發(fā)送郵件不是
$text=$msg->as_string;print方法可以把消息的字符串形式寫入一個文件句柄自定的文件中:
$msg->print($SOME_FILEHANDLE);例子18-3是一個發(fā)送郵件的程序,它把在命令行輸入的文件名作為附件例18-3:發(fā)送帶附件的郵件
#!/usr/bin/perl-w#mail-attachment-sendfilesasattachmentsuseMIME::Lite;useGetopt::Std;my$SMTP_SERVER='smtp.example.com';#可根據(jù)自己情況改變my$DEFAULT_SENDER='sender@example.com';#同上my$DEFAULT_RECIPIENT='recipient@example.com';#同上MIME::Lite->send('smtp',$SMTP_SERVER,Timeout=>60);my(o,$msg);#processoptionsgetopts('hf:t:s:',/o);$o{f}||=$DEFAULT_SENDER;$o{t}||=$DEFAULT_RECIPIENT;$o{s}||='Yourbinaryfile,sir';if($o{h}or!@ARGV){die"usage:/n/t$0[-h][-ffrom][-tto][-ssubject]file.../n";}#constructandsendemail$msg=newMIME::Lite(From=>$o{f},To=>$o{t},Subject=>$o{s},Data=>"Hi",Type=>"multipart/mixed",);while(@ARGV){$msg->attach('Type'=>'application/octet-stream','Encoding'=>'base64','Path'=>shift@ARGV);}$msg->send();
新聞熱點
疑難解答
圖片精選