a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Perl > 正文

PerlCookbook2介紹

2019-11-18 17:22:38
字體:
供稿:網(wǎng)友

摘要:SQL語言在標準數(shù)據(jù)庫以外的應用

問題:你想對一個非關系型數(shù)據(jù)庫結構進行復雜的SQL查詢。

解決:使用CPAN上的DBD::SQLite模塊

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)建一個值自增加的列的時候)。你可以把這列的類型指定為:“INTEGERPRIMARYKEY”。
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字段里面。

參照:“ExecutinganSQLCommandUsingDBI”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');

 

討論:

MIME::Lite模塊創(chuàng)建并發(fā)送帶MIME指定類型附件的郵件。MIME是MultimediaInternetMailExtensions的縮寫,而且也是在郵件中附帶各種文件文檔的標準方式。但是,這個規(guī)則并不能從郵件信息中把附件提取出來。如果你想從郵件信息中提取MIME指定類型附件,可以參考這篇文章“ExtractingAttachmentsfromMail”

當你創(chuàng)建MIME
::Lite對象,以及向創(chuàng)建的對象中添加內(nèi)容的時候。后面的參數(shù)采用“參數(shù)名=>值”的有名對形式。有名對的參數(shù)名部分應該暗示它代表的郵件頭(如,F(xiàn)rom,To,Subject)以及其它其它MIME::Lite所特有的東西。如果參數(shù)名是郵件頭,后面應該加上冒號,如:
$msg=MIME::Lite->new('X-Song-Playing:'=>'NatchezTrace');

然而,當參數(shù)名代表的郵件頭在表18-2中時,后面可以不加冒號。下表中*代表通配符,例如Content-*可以代表Content-Type和Content-ID但是不代表Dis-Content

表18-2:MIME::Lite頭

ApprovedEncryptedReceivedSenderBccFromReferencesSubjectCcKeywordsReply-ToToCommentsMessage-IDResent-X-Content-*MIME-VersionReturn-PathDateOrganization

MIME::Lite參數(shù)類型的完整列表在表18-3中

表18-3:MIME::Lite參數(shù)類型

DataFHReadNowDatestampFilenameTopDispositionIdTypeEncodingLengthFilenamePath

MIME::Lite模塊的參數(shù)類型決定附件的類型和附件的添加方法:

Path指定作為附件的文件的路徑Filename指定接受方保存附件時,附件的默認文件名。如果指定了Path參數(shù),那么默認的文件名就是路徑中的名字Data指定附件添加的日期Type指定待添加附件的文件編碼類型Disposition它的值只能是inline和attachment。前者指定接受方打開郵件的時候附件內(nèi)容會跟在郵件正文后顯示,而不單獨作為一個附加物。后者指定接受方應該指定一個附件的解碼方法,并且保存附件,此時會有提示FH指定一個讀取附件的開放的文件句柄

這兒有幾個有用的附件編碼類型:TEXT代表text/plain,為Type的默認值;BINARY是application/octet-stream的縮寫;multipart/mixed表明郵件有附件;application/msword表明附件為微軟的Word文檔;application/vnd.ms-Excel表明附件為微軟的Excel文檔;application/pdf表明附件為PDF文檔;image/gif,image/jpeg,image/png分別指定GIF,JPEG,PNG文件;audio/mpeg指定MP3格式文件;video/mpeg指定MPEG格式影片;video/quicktime指定Quicktime格式文件。

發(fā)送郵件的唯一兩種方法是sendmail和Net::SMTP。調(diào)用send方法時,若第一個參數(shù)為“smtp”,則用Net::SMTP發(fā)送郵件。send的其它參數(shù)都傳給Net::SMTP。
#timeoutof30seconds$msg->send("smtp","mail.example.com",Timeout=>30);
如果你想創(chuàng)建多個MIME::Lite對象,也就是發(fā)送多附件,你可以把send作為類方法調(diào)用,此時默認發(fā)送方法會被替換。
MIME::Lite->send("smtp","mail.example.com");$msg=MIME::Lite->new(opts);#...$msg->send();#sendsusingSMTP

如果你要處理多個消息,用好ReadNow參數(shù)。它指定附件應該立即從文件或文件句柄中讀取發(fā)送,而不是在發(fā)送前轉(zhuǎn)化為字符串。

發(fā)送郵件不是MIME::Lite能做的唯一事情。你還可以用它把最后的郵件內(nèi)容變成字符串:

$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();

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 婷婷中文字幕 | 色综合免费 | 一级毛片在线播放 | 欧美一区2区三区4区公司二百 | 日韩色视频| 日本免费一区二区三区 | 国产一区二区视频精品 | 亚洲精品成人av | 黄视频国产 | 精品久久久久久亚洲精品 | 污视频免费网站观看 | 成人一级片在线观看 | 最新免费av网站 | 欧美五月 | 欧美日韩在线不卡 | 美女视频黄色免费 | 毛片黄片免费看 | 久草视频在线播放 | 日韩电影一区二区三区 | 四虎网站在线观看 | 久久久精品网 | 青青草视频免费 | 四色成人av永久网址 | 久久婷婷国产麻豆91天堂 | av片在线免费观看 | 中文在线 | 中文 | 黄色在线观看网址 | 国产成人精品在线 | 成人精品一区二区三区电影黑人 | 久久久久久久一区 | 一区二区免费视频 | 国产精品99久久久久久www | 欧美日韩电影一区二区 | 久久精品亚洲 | 久久久97 | 色综合久久久久 | 一区二区三区国产精品 | 精品一区二区三区四区五区 | 91原创视频在线观看 | 国产成人精品在线观看 | 久久国产精品免费一区二区三区 |