useDBI;$dbh=DBI->connect("dbi:SQLite:dbname=/Users/gnat/salaries.sqlt","","",{RaiseError=>1,AutoCommit=>1});$dbh->do("UPDATEsalariesSETsalary=2*salaryWHEREname='Nat'");$sth=$dbh->SQLite定義的數據庫里面沒有數據類型這個概念。不管你在創建一個表的時候指定的是什么數據類型,以后你可以在其中放入任何類型的數值(包括字符型,數字型,日期型,二進制對象/blob)。實際上,創建表的時候你甚至可以不指定數據類型。CREATETABLEpeople(id,name,birth_year);SQLite只有在要比較數據的時候,如用WHERE子句或對某些值進行排序,才會考慮數據類型。SQLite在比較數據的時候,只考慮被比較對象的類型,而不管被比較對象所在列的其它數據是什么類型。像Perl一樣,SQLite只能識別字符型和數字型。兩個數值總是以浮點類型進行比較,兩個字符串直接比較。當不同類型的數據比較的時候,數字總是比字符小。只有一種情況SQLite才會關心你為某一列申明的數據類型(需要創建一個值自增加的列的時候)。你可以把這列的類型指定為:“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”。唯一的變通方法就是在你存儲數據之前自行編碼,然后在取出數據之后再手工解碼,就象 URL編碼或Base64編碼方式一樣。這甚至可以用在 BLOB字段里面。 參照:“Executingan
SQLCommandUsing DBI” CPAN上 DBD::SQLite模塊的正式文檔。它在SQLite的主頁上photoshopped/nat.jpg',Filename=>'gnat-face.jpg');
$msg->attach(Type=>'TEXT',
Data=>'Ihopeyoucanusethis!');最后,發送這份郵件,發送它的方法是可選的:
$msg->send();#默認的方法是用sendmail規則發送#指定其它的方法$msg->send('smtp','mailserver.example.com');
$msg=MIME::Lite->new('X-Song-Playing:'=>'NatchezTrace');
然而,當參數名代表的郵件頭在表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);如果你想創建多個
MIME::Lite->send("smtp","mail.example.com");$msg=MIME::Lite->new(opts);#...$msg->send();#sendsusingSMTP
發送郵件不是
$text=$msg->as_string;print方法可以把消息的字符串形式寫入一個文件句柄自定的文件中:
$msg->print($SOME_FILEHANDLE);例子18-3是一個發送郵件的程序,它把在命令行輸入的文件名作為附件例18-3:發送帶附件的郵件
#!/usr/bin/perl-w#mail-attachment-sendfilesasattachmentsuseMIME::Lite;useGetopt::Std;my$SMTP_SERVER='smtp.example.com';#可根據自己情況改變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();
新聞熱點
疑難解答
圖片精選