<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[『AskWan』]]></title> 
<link>http://www.askwan.com/index.php</link> 
<description><![CDATA[Related About My Life,Unix,Linux,System Architecture,Mysql,PostgreSQL,Oracle Etc ]]></description> 
<language>en-US</language> 
<copyright><![CDATA[『AskWan』]]></copyright>
<item>
<link>http://www.askwan.com/use_perl_to_get_timestamp_localtime_strftime/</link>
<title><![CDATA[use perl to get timestamp]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Fri, 30 Oct 2009 00:48:08 +0000</pubDate> 
<guid>http://www.askwan.com/use_perl_to_get_timestamp_localtime_strftime/</guid> 
<description>
<![CDATA[ 
	in different&nbsp;&nbsp;context have different value <br/>eg:<br/>saclar context<br/>print scalar (localtime);<br/><br/>then output :<br/>Thu Oct 29 18:50:01 2009<br/><br/>but in list context ;<br/>($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =localtime(time);<br/>$sec&nbsp;&nbsp;&nbsp;&nbsp;0 ~ 59<br/>$min&nbsp;&nbsp;&nbsp;&nbsp;0 ~ 59<br/>$hour&nbsp;&nbsp;0 ~ 23<br/>$mday&nbsp;&nbsp; 1~31<br/>$mon&nbsp;&nbsp;&nbsp;&nbsp; 0 ~ 11<br/>$year&nbsp;&nbsp; after 1900,it passed years<br/>$wday&nbsp;&nbsp;&nbsp;&nbsp;0 ~ 6<br/>$yday&nbsp;&nbsp;&nbsp;&nbsp;0 ~365<br/>$isdst&nbsp;&nbsp; insignificant for me <br/><br/>can use this to get timestamp<br/><textarea name="code" class="php" rows="15" cols="100">#!/usr/bin/perl -w
my ($sec,$min,$hour,$mday,$mon,$year)=(localtime)[0..5];
my ($sec,$min,$hour,$mday,$mon,$year)=($sec,$min,$hour,$mday,$mon+1,$year+1900);
$timestamp=$year."-".$mon."-".$mday." ".$hour.":".$min.":".$sec;
print $timestamp."&#92;n";</textarea><br/>output:<br/>2009-10-29 19:2:40<br/><br/>have some defect ablove,use this <br/><textarea name="code" class="php" rows="15" cols="100">#!/usr/bin/perl -w
my&nbsp;&nbsp;($sec,$min,$hour,$mday,$mon,$year) = (localtime)[0..5];
($sec,$min,$hour,$mday,$mon,$year) = (
&nbsp;&nbsp;&nbsp;&nbsp;sprintf("%02d", $sec),
&nbsp;&nbsp;&nbsp;&nbsp;sprintf("%02d", $min),
&nbsp;&nbsp;&nbsp;&nbsp;sprintf("%02d", $hour),
&nbsp;&nbsp;&nbsp;&nbsp;sprintf("%02d", $mday),
&nbsp;&nbsp;&nbsp;&nbsp;sprintf("%02d", $mon + 1),
&nbsp;&nbsp;&nbsp;&nbsp;$year + 1900);
$timestamp=$year."-".$mon."-".$mday." ".$hour.":".$min.":".$sec;
print $timestamp."&#92;n";</textarea><br/>output:<br/>2009-10-29 19:02:45<br/><br/>you can also use POSIX functions:<br/>eg<br/><textarea name="code" class="php" rows="15" cols="100">#!/usr/bin/perl -w
use POSIX qw(strftime);
$timestamp1= strftime "%Y-%m-%d %H:%M:%S", gmtime;#GMT Zone
$timestamp2 = strftime "%Y-%m-%d %H:%M:%S", localtime;</textarea><br/><br/>output:<br/>2009-10-29 11:10:44<br/>2009-10-29 19:10:44
]]>
</description>
</item><item>
<link>http://www.askwan.com/use_DBD_Pg_to_connect_PostgreSQL_database/</link>
<title><![CDATA[use DBD::Pg to connect PostgreSQL database]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Tue, 20 Oct 2009 02:01:50 +0000</pubDate> 
<guid>http://www.askwan.com/use_DBD_Pg_to_connect_PostgreSQL_database/</guid> 
<description>
<![CDATA[ 
	first, install&nbsp;&nbsp;DBI and DBD::Pg module<br/><br/>come next two example I have writen for testing:<br/><br/>example one:<br/><textarea name="code" class="php" rows="15" cols="100">#!/usr/bin/perl -w
#this is an example writen by askwan to insert into somedata to a table 
use DBI;


my $dbh = DBI->connect("DBI:Pg:dbname="askwan.com";host=localhost", "postgres", "postgres", {AutoCommit => 0,'RaiseError' => 1,PrintError => 1});
# The AutoCommit attribute should always be explicitly set



for(my $i=0;$i<100;$i++){
# execute INSERT query
my $rows = $dbh->do("INSERT INTO test(id, name) VALUES ('id_$i', 'name_$i')");
print "$i row(s) inserted &#92;n";
}

my $sth = $dbh->prepare("SELECT id, name FROM test");
$sth->execute();

while(my $ref = $sth->fetchrow_hashref()) {
&nbsp;&nbsp;&nbsp;&nbsp;print "$ref->{'id'} is a $ref->{'name'}&#92;n";
}

$dbh->disconnect();</textarea><br/><br/>example two:<br/><textarea name="code" class="php" rows="15" cols="100">#!/usr/bin/perl -w
#this is an example writen by askwan to query some info from PostgreSql
use DBI;

$dbname="askwan";
$host="localhost";
$port="5432";
$username="postgres";
$password="postgres";

$dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=$host;port=$port;",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$username,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$password,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{AutoCommit => 0, RaiseError => 1, PrintError => 0}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );
$sth=$dbh->prepare('select datname,blks_read,blks_hit from pg_stat_database');

$sth->execute();

print sprintf("%-20s%-20s%-20s","datname","blks_read","blks_hit"),"&#92;n";
print "-" x 60 ."&#92;n";

my @data;
my ($datname,$blk_read,$blks_hit);

while(@data=$sth->fetchrow_array()) {
&nbsp;&nbsp;&nbsp;&nbsp; ($datname,$blk_read,$blks_hit)=@data;
&nbsp;&nbsp;&nbsp;&nbsp; print sprintf("%-20s%-20s%-20s","$datname","$blk_read","$blks_hit"),"&#92;n";

}
$dbh->disconnect();</textarea>output :<br/><pre>datname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blks_read&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blks_hit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>------------------------------------------------------------<br/>template1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>template0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>postgres&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;136&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5955&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>askwan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;124&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7396</pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>Tags - <a href="http://www.askwan.com/tags/%2526%2523039%253B/" rel="tag">&#039;</a> , <a href="http://www.askwan.com/tags/dbd%253Apg%2526%2523039%253Bpostgresql/" rel="tag">dbd:pg&#039;postgresql</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/perl_DBD_Oracle_connect_oracle/</link>
<title><![CDATA[use DBD::Oracle connect oracle database]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Thu, 10 Sep 2009 12:40:07 +0000</pubDate> 
<guid>http://www.askwan.com/perl_DBD_Oracle_connect_oracle/</guid> 
<description>
<![CDATA[ 
	the first way:<br/><textarea name="code" class="php" rows="15" cols="100">#!/usr/bin/perl -w
use strict;
use DBI;
my $dbh = DBI->connect( 'dbi:Oracle:askwan', 'scott', 'scott',{ RaiseError => 1, AutoCommit => 0 } );

my $sql = qq{ SELECT 'askwan.com' FROM DUAL };

my $sth = $dbh->prepare( $sql );

$sth->execute(&nbsp;&nbsp;);

while ( my($String) = $sth->fetchrow_array) {
&nbsp;&nbsp; print $String, "&#92;n";
}
$dbh->disconnect(&nbsp;&nbsp;);</textarea><br/><br/>the second way:<br/><textarea name="code" class="php" rows="15" cols="100">#!/usr/bin/perl -w
use strict;
use DBI;
my $dbh = DBI->connect( 'dbi:Oracle:askwan', 'scott', 'scott',{ RaiseError => 1, AutoCommit => 0 } );

print $dbh->selectrow_array(qq{ SELECT 'askwan.com' FROM DUAL });

$dbh->disconnect(&nbsp;&nbsp;);</textarea><br/><br/>----------END-----------<br/>Tags - <a href="http://www.askwan.com/tags/perl/" rel="tag">perl</a> , <a href="http://www.askwan.com/tags/dbd/" rel="tag">dbd</a> , <a href="http://www.askwan.com/tags/oracle/" rel="tag">oracle</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/perl_dbd_oracle_blob_data/</link>
<title><![CDATA[perl连oracle取BLOB字段值]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Wed, 09 Sep 2009 07:00:51 +0000</pubDate> 
<guid>http://www.askwan.com/perl_dbd_oracle_blob_data/</guid> 
<description>
<![CDATA[ 
	oracle数据库中有一字表字段类型为BLOB，存储的pdf，doc文档等的二进制文件数据，现在要拿出来这些文件来<br/><br/><textarea name="code" class="php" rows="15" cols="100">
#!/usr/bin/perl

use DBI;
$dbh = DBI->connect("dbi:Oracle:ASKWAN","askwan","askwan") or die("DATABASE connect error!&#92;n");
$dbh->{LongReadLen} = 50*1024*1024;
$dbh->{LongTruncOk}=1;
$count=0;

$sql = "select FJWJMC,bgfj from BGJBXXB";

$sth = $dbh->prepare($sql);

$sth->execute() or die(" EXCUTE SQL ERROR! &#92;n");

while(@rows = $sth->fetchrow)
{
&nbsp;&nbsp;$count++;

&nbsp;&nbsp;if(@rows[0]=~/&#92;.pdf/i){
&nbsp;&nbsp;print "$count&#92;n";
&nbsp;&nbsp;open(FD,">@rows[0].$count.pdf");
&nbsp;&nbsp;binmode(FD);
&nbsp;&nbsp;print FD @rows[1];
&nbsp;&nbsp;close(FD);
&nbsp;&nbsp;print "@rows[0] export compelte!&#92;n"
&nbsp;&nbsp;}
&nbsp;&nbsp;
&nbsp;&nbsp;elsif(@rows[0]=~/&#92;.doc/i){
&nbsp;&nbsp;print "$count&#92;n";
&nbsp;&nbsp;open(FD,">@rows[0].$count.doc");
&nbsp;&nbsp;binmode(FD);
&nbsp;&nbsp;print FD @rows[1];
&nbsp;&nbsp;close(FD);
&nbsp;&nbsp;print "@rows[0] export compelte!&#92;n"
&nbsp;&nbsp;}

&nbsp;&nbsp;elsif(@rows[0]=~/&#92;.xls/i){
&nbsp;&nbsp;print "$count&#92;n";
&nbsp;&nbsp;open(FD,">@rows[0].$count.xls");
&nbsp;&nbsp;binmode(FD);
&nbsp;&nbsp;print FD @rows[1];
&nbsp;&nbsp;close(FD);
&nbsp;&nbsp;print "@rows[0] export compelte!&#92;n"
&nbsp;&nbsp;}
&nbsp;&nbsp;else{
&nbsp;&nbsp;print "$count&#92;n";
&nbsp;&nbsp;open(FD,">@rows[0].$count.ppt");
&nbsp;&nbsp;binmode(FD);
&nbsp;&nbsp;print FD @rows[1];
&nbsp;&nbsp;close(FD);
&nbsp;&nbsp;print "@rows[0] export compelte!&#92;n"
&nbsp;&nbsp;}

print "&#92;n";
}

$sth->finish;
$dbh->disconnect();
exit 0;

</textarea><br/><br/><br/>------------end----------<br/>Tags - <a href="http://www.askwan.com/tags/perl/" rel="tag">perl</a> , <a href="http://www.askwan.com/tags/oracle/" rel="tag">oracle</a> , <a href="http://www.askwan.com/tags/blob/" rel="tag">blob</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/parse_apache_log_with_perl/</link>
<title><![CDATA[simple way to parse apache log with perl to find top 10 clients]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Fri, 04 Sep 2009 07:03:23 +0000</pubDate> 
<guid>http://www.askwan.com/parse_apache_log_with_perl/</guid> 
<description>
<![CDATA[ 
	<textarea name="code" class="php" rows="15" cols="100">#!/usr/bin/perl -w
$file=shift;
open(FD,"$file");
while(<FD>){
&nbsp;&nbsp;&nbsp;&nbsp;m/(&#92;d{1,3}&#92;.&#92;d{1,3}&#92;.&#92;d{1,3}&#92;.&#92;d{1,3})/;
&nbsp;&nbsp;&nbsp;&nbsp;$IP{$1}++;
}

print "Client IPs&#92;t&#92;tNum Of Visits&#92;n";
foreach ( sort { $IP{ $b } <=> $IP{ $a } } keys( %IP) ) {
&nbsp;&nbsp; print "$_&#92;t&#92;t", $IP{ $_ }, "&#92;n";
&nbsp;&nbsp; ++$a;
&nbsp;&nbsp; exit 0 if $a>9;
&nbsp;&nbsp; }
</textarea><br/><br/>usage and output:<br/><div class="code">./parse_apache.pl&nbsp;&nbsp; &#91;APACHE LOGFILE&#93;</div># perl parse_apache.pl access_askwan_com_log<br/>Client IPs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Num Of Visits<br/>192.168.11.8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1794924<br/>192.168.11.60&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80887<br/>192.168.11.9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;34403<br/>192.168.11.50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18026<br/>192.168.11.196&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8379<br/>192.168.11.201&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1353<br/>192.168.11.155&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1041<br/>192.168.21.156&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;449<br/>192.168.21.161&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;163<br/>192.168.12.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;84<br/><br/>-------------end--------------<br/>Tags - <a href="http://www.askwan.com/tags/parse/" rel="tag">parse</a> , <a href="http://www.askwan.com/tags/apache/" rel="tag">apache</a> , <a href="http://www.askwan.com/tags/logperl/" rel="tag">logperl</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/150/</link>
<title><![CDATA[Memcached的Php测试实现]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Fri, 20 Feb 2009 07:40:00 +0000</pubDate> 
<guid>http://www.askwan.com/post/150/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关于Memcached的原理，安装，配置等这里就省了，一搜一堆，今天我写了个PHP简单脚本做了个Memcached缓存数据库查询结果的测试。<br/><br/>测试的数据，我这有现成的，PW论坛数据库的pw_members表，取最后注册的十条数据：<br/><pre>mysql> select uid,username,password,gender from pw_members order by uid desc limit 10;&nbsp;&nbsp;<br/>+--------+-----------+----------------------------------+--------+<br/>&#124; uid&nbsp;&nbsp;&nbsp;&nbsp;&#124; username&nbsp;&nbsp;&#124; password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; gender &#124;<br/>+--------+-----------+----------------------------------+--------+<br/>&#124; 751490 &#124; a62986233 &#124; 8d03f56ad2c48d494cd4b73b3ba64dca &#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &#124; <br/>&#124; 751489 &#124; hldhoxbh&nbsp;&nbsp;&#124; 25d55ad283aa400af464c76d713c07ad &#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &#124; <br/>&#124; 751488 &#124; wuhan0088 &#124; ba2206cbae7c1bfe33a54ff161943bab &#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &#124; <br/>&#124; 751487 &#124; anrron&nbsp;&nbsp;&nbsp;&nbsp;&#124; b206e95a4384298962649e58dc7b39d4 &#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &#124; <br/>&#124; 751486 &#124; hldjxlkx&nbsp;&nbsp;&#124; 9c98df872d24244696c393a1d26ab749 &#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &#124; <br/>&#124; 751485 &#124; 1394afjh&nbsp;&nbsp;&#124; 25d55ad283aa400af464c76d713c07ad &#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &#124; <br/>&#124; 751484 &#124; yesi808&nbsp;&nbsp; &#124; 32baeaa3c422413843b015919c0be999 &#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &#124; <br/>&#124; 751483 &#124; IDC010pw&nbsp;&nbsp;&#124; 25f9e794323b453885f5181f1b624d0b &#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &#124; <br/>&#124; 751482 &#124; ebay360v&nbsp;&nbsp;&#124; a36b9e764318d31b4810d7d18096e6e7 &#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &#124; <br/>&#124; 751481 &#124; ppgqsvgv&nbsp;&nbsp;&#124; 9c98df872d24244696c393a1d26ab749 &#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 &#124; <br/>+--------+-----------+----------------------------------+--------+<br/>10 rows in set (0.00 sec)</pre><br/><br/>脚本代码<br/><br/><br/><textarea name="code" class="php" rows="15" cols="100"><?php
 /***********************************************&nbsp;&nbsp;
&nbsp;&nbsp;* Script&nbsp;&nbsp;Name :&nbsp;&nbsp; Memcache Tesing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;
&nbsp;&nbsp;* Make By&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp; askwan （万志华）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;
&nbsp;&nbsp;* Website&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp; askwan.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;
&nbsp;&nbsp;* Email&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp; askwan@yahoo.cn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;
&nbsp;&nbsp;* License&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;GPL (Gnu Public License)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;
&nbsp;&nbsp;* Created Date :&nbsp;&nbsp;20/02/2009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;
&nbsp;&nbsp;***********************************************/&nbsp;&nbsp;

 #数据库连接信息

&nbsp;&nbsp; $host="192.168.0.71";
&nbsp;&nbsp;&nbsp;&nbsp;$user="askwan";
&nbsp;&nbsp;&nbsp;&nbsp;$passwd="passwd";
&nbsp;&nbsp;&nbsp;&nbsp;$db="pwbbs";
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;$query="select UID,username,password,gender from pw_members order by uid desc limit 10;";
&nbsp;&nbsp;
&nbsp;&nbsp;#我这里选用了MD5方式加密SQL做为key ，也可用其他加密方式，如Base64等
&nbsp;&nbsp;&nbsp;&nbsp;$m_key=md5($query);
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;$mem=new Memcache();
&nbsp;&nbsp;&nbsp;&nbsp;$mem->connect("192.168.0.72",11211);
&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;if(!$result=$mem->get($m_key)){
&nbsp;&nbsp;&nbsp;&nbsp;echo "这是从数据库读出来的结果!";
&nbsp;&nbsp;&nbsp;&nbsp;$connection=mysql_connect($host,$user,$passwd) or die ("Unable to conect!" );
&nbsp;&nbsp;&nbsp;&nbsp;mysql_select_db($db);
&nbsp;&nbsp;&nbsp;&nbsp;$result=mysql_query($query) or die("Error query!".mysql_error());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;while($row=mysql_fetch_row($result)){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$memdata[]=$row;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;$mem->add($m_key,$memdata);
&nbsp;&nbsp;&nbsp;&nbsp;mysql_free_result($result);
&nbsp;&nbsp;&nbsp;&nbsp;mysql_close($connection);&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;else{
&nbsp;&nbsp;&nbsp;&nbsp;echo "这是从Memcached Server读出来的结果!&#92;n"; 
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;$result=$mem->get($m_key);
&nbsp;&nbsp;&nbsp;&nbsp;#显示获取的数据
&nbsp;&nbsp;&nbsp;&nbsp;echo "<table cellpadding=10 border=2>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "<tr>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "<th>Uid</th>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "<th>Username</th>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "<th>PassWord</th>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "<th>Gender</th>";
&nbsp;&nbsp;&nbsp;&nbsp;echo "</tr>";
&nbsp;&nbsp;&nbsp;&nbsp;for($i=0;$i<10;$i++){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "<tr>";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($j=0;$j<4;$j++){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "<td>".$result[$i][$j]."</td>";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "</tr>";
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
?></textarea><br/><br/><br/>第一次读取数据是直接从Mysql数据库中取数据：如：<br/><br/><a href="http://www.askwan.com/attachment.php?fid=160" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=160" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>以后访问就直接从Memcached Server中取数据了：<br/><br/><a href="http://www.askwan.com/attachment.php?fid=161" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=161" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>测试的目的达到,有时间再对Memcached的分布式功能测试一番。<br/><br/>-------------END-------------<br/>Tags - <a href="http://www.askwan.com/tags/memcached/" rel="tag">memcached</a> , <a href="http://www.askwan.com/tags/php/" rel="tag">php</a> , <a href="http://www.askwan.com/tags/%25E6%25B5%258B%25E8%25AF%2595/" rel="tag">测试</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/135/</link>
<title><![CDATA[用xdebug和wincachegrind分析php性能瓶颈]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Mon, 12 Jan 2009 03:21:26 +0000</pubDate> 
<guid>http://www.askwan.com/post/135/</guid> 
<description>
<![CDATA[ 
	废话不多说<br/><br/>下载安装<br/><div class="code">#wget http://xdebug.org/files/xdebug-2.0.4.tgz<br/>#tar -zxvf xdebug-2.0.4.tgz <br/>#cd xdebug-2.0.4<br/>#/usr/local/php/bin/phpize <br/># ./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config <br/>#make &amp;&amp; make install</div><br/><br/>vim /usr/local/php/lib/php.ini<br/><br/>将extention_dir="./"&nbsp;&nbsp;修改为 <br/>extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"<br/>增加一行<br/>extention ="xdebug.so"<br/><br/>然后 末尾增加 <br/><br/><div class="code">&#91;Xdebug&#93;<br/>zend_extension_ts=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so<br/>zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so<br/>xdebug.auto_trace = on<br/>xdebug.auto_profile = on<br/>xdebug.collect_params = on<br/>xdebug.collect_return = on<br/>xdebug.profiler_enable = on<br/>xdebug.trace_output_dir=&quot;/tmp/xdebug&quot;<br/>xdebug.profiler_output_dir=&quot;/tmp/xdebug&quot;</div><br/><br/>分析用kcachegrind或者wincachegrind都可以<br/>window下就用wincachegrind <br/>下载地址：<a href="http://sourceforge.net/projects/wincachegrind/" target="_blank">http://sourceforge.net/projects/wincachegrind/</a><br/><br/>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/131/</link>
<title><![CDATA[prebuilt ppm packages for win32 activeperl ]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Sun, 14 Dec 2008 00:20:37 +0000</pubDate> 
<guid>http://www.askwan.com/post/131/</guid> 
<description>
<![CDATA[ 
	This area contains prebuilt ppm packages for Win32 for ActivePerl builds <br/>for 10xx&nbsp;&nbsp; <br/><a href="http://cpan.uwinnipeg.ca/PPMPackages/" target="_blank">http://cpan.uwinnipeg.ca/PPMPackages/</a><br/><a href="http://www.bribes.org/perl/ppm" target="_blank">http://www.bribes.org/perl/ppm</a><br/><a href="http://trouchelle.com/ppm10/" target="_blank">http://trouchelle.com/ppm10/</a><br/><a href="http://cpan.uwinnipeg.ca/PPMPackages/10xx/" target="_blank">http://cpan.uwinnipeg.ca/PPMPackages/10xx/</a><br/><br/><br/>for&nbsp;&nbsp;8xx&nbsp;&nbsp;&nbsp;&nbsp;<br/><a href="http://theoryx5.uwinnipeg.ca/ppms/" target="_blank">http://theoryx5.uwinnipeg.ca/ppms/</a><br/><a href="http://www.bribes.org/perl/ppm" target="_blank">http://www.bribes.org/perl/ppm</a><br/><a href="http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer58" target="_blank">http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer58</a> <br/><a href="http://theoryx5.uwinnipeg.ca/ppms/" target="_blank">http://theoryx5.uwinnipeg.ca/ppms/</a><br/><a href="http://trouchelle.com/ppm/" target="_blank">http://trouchelle.com/ppm/</a><br/><a href="http://ppm.tcool.org/archives/" target="_blank">http://ppm.tcool.org/archives/</a><br/><br/>for&nbsp;&nbsp;6xx&nbsp;&nbsp;&nbsp;&nbsp;<br/><a href="http://theoryx5.uwinnipeg.ca/ppmpackages/" target="_blank">http://theoryx5.uwinnipeg.ca/ppmpackages/</a><br/><a href="http://www.bribes.org/perl/ppm" target="_blank">http://www.bribes.org/perl/ppm</a><br/><a href="http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer" target="_blank">http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServer</a><br/><br/><br/>eg::<br/>Packages in this directory may be installed by giving the following command at a DOS prompt: <br/><br/> C:&#92;>ppm install <a href="http://cpan.uwinnipeg.ca/PPMPackages/10xx/" target="_blank">http://cpan.uwinnipeg.ca/PPMPackages/10xx/</a>[package].ppd<br/><br/>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/129/</link>
<title><![CDATA[php扩展模块tidy安装]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Thu, 20 Nov 2008 06:09:59 +0000</pubDate> 
<guid>http://www.askwan.com/post/129/</guid> 
<description>
<![CDATA[ 
	tidy是一个非常好用的html代码分析和纠错的工具,<br/>这里有相关介绍：<a href="http://pecl.php.net/package/tidy" target="_blank">http://pecl.php.net/package/tidy</a><br/><br/>首先安装tidy库支持<br/><br/>可以用svn checkout 最新源代码<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#cvs -d:pserver:anonymous@tidy.cvs.sourceforge.net:/cvsroot/tidy login<br/>#cvs -z3 -d:pserver:anonymous@tidy.cvs.sourceforge.net:/cvsroot/tidy co tidy</div></div><br/><br/>或者直接到这里：<a href="http://pecl.php.net/package/tidy" target="_blank">http://pecl.php.net/package/tidy</a>下载已经打包好的源码包<br/>最新的版本是2005年发布的1.2版<br/>下载地址<a href="http://pecl.php.net/get/tidy-1.2.tgz" target="_blank">http://pecl.php.net/get/tidy-1.2.tgz</a> <br/>它支持PHP 4.3.0 or newer<br/><br/><br/>编译安装<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#cd tidy/build/gmake/<br/>#make<br/>#make install</div></div><br/><br/>安装tidy的php支持<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#wget&nbsp;&nbsp;<a href="http://pecl.php.net/get/tidy-1.2.tgz" target="_blank">http://pecl.php.net/get/tidy-1.2.tgz</a> <br/>#/usr/local/webserver/php/bin/phpize <br/>#./configure --with-php-config=/usr/local/webserver/php/bin/php<br/>#make<br/>#make install </div></div><br/><br/>修改php.ini文件<br/>增加<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">extension="tidy.so"</div></div><br/><br/>phpinfo查看是否生效<br/><a href="http://www.askwan.com/attachment.php?fid=148" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=148" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/><br/>Tags - <a href="http://www.askwan.com/tags/php/" rel="tag">php</a> , <a href="http://www.askwan.com/tags/tidy/" rel="tag">tidy</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/128/</link>
<title><![CDATA[php扩展模块ffmpeg-php安装]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Thu, 20 Nov 2008 04:46:24 +0000</pubDate> 
<guid>http://www.askwan.com/post/128/</guid> 
<description>
<![CDATA[ 
	我的php安装位置/usr/local/webserver/php/，路径可根据各自需要做些修改<br/><br/>checkout ffmpeg源码<br/>ffmpeg: <br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg</div></div><br/><br/>安装ffmpeg库支持<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#cd ffmpeg<br/>#./configure --enable-shared <br/>#make clean <br/>#make <br/>#make install</div></div><br/><br/><span style="color: #DC143C;">2009-04-10 补充：<br/>不少网友表示编译ffmpeg时候有如下错误：</span><br/><br/><div class="code">math-errno&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -c -o libavdevice/v4l.o libavdevice/v4l.c<br/>In file included from libavdevice/v4l.c:32:<br/>/usr/include/linux/videodev.h:56: error: syntax error before &quot;ulong&quot;<br/>/usr/include/linux/videodev.h:72: error: syntax error before &#039;}&#039; token<br/>libavdevice/v4l.c: In function `grab_read_header&#039;:<br/>libavdevice/v4l.c:77: error: storage size of &#039;tuner&#039; isn&#039;t known<br/>libavdevice/v4l.c:141: error: invalid application of `sizeof&#039; to incomplete type `video_tuner&#039;<br/>libavdevice/v4l.c:148: error: invalid application of `sizeof&#039; to incomplete type `video_tuner&#039;<br/>libavdevice/v4l.c:77: warning: unused variable `tuner&#039;<br/>make: *** &#91;libavdevice/v4l.o&#93; Error 1</div><br/><br/>这个问题可以禁用ffmpeg 的v41 和 v42版本<br/>可以用下面这个编译参数：<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">./configure --disable-mmx --enable-shared --disable-demuxer=v4l --disable-demuxer=v4l2</div></div><br/><br/><span style="color: #DC143C;"><br/>注：如果系统安装了第三方rpm软件库包，可直接安装ffmpeg支持，更方便<br/>#yum install ffmpeg ffmpeg-devel</span><br/><br/>checkout ffmpeg-php源码<br/>ffmpeg-php：<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#svn co <a href="https://svn.sourceforge.net/svnroot/ffmpeg-php/trunk/ffmpeg-php" target="_blank">https://svn.sourceforge.net/svnroot/ffmpeg-php/trunk/ffmpeg-php</a></div></div><br/><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#cd ffmpeg-php<br/>#/usr/local/webserver/php/bin/phpize <br/>#./configure --with-php-config=/usr/local/webserver/php/bin/php-config <br/>#make && make install</div></div>默认安装到/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/下<br/><br/><br/>修改php.ini<br/><br/>修改<br/><br/><div class="code">extension_dir = &quot;/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/&quot;</div><br/><br/>增加一行<br/><br/><div class="code">extension = &quot;ffmpeg.so&quot;</div><br/><br/>重新启动webserver<br/><br/><br/><span style="color: #FF0000;">注：还有一种方法安装是直接编译ffmpeg-php扩展模块到php中<br/>首先copy ffmpeg-php源码到php的ext目录下<br/>phpize 一下<br/>然后重新编译php，在最后增加--with-ffmpeg编译选项</span><br/><br/>phpinfo查看ffmpeg是否生效<br/><a href="http://www.askwan.com/attachment.php?fid=146" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=146" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/>Tags - <a href="http://www.askwan.com/tags/php/" rel="tag">php</a> , <a href="http://www.askwan.com/tags/ffmpeg/" rel="tag">ffmpeg</a> , <a href="http://www.askwan.com/tags/ffmpeg-php/" rel="tag">ffmpeg-php</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/126/</link>
<title><![CDATA[use nmake to install perl modules on OS of windows]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Sat, 01 Nov 2008 03:14:14 +0000</pubDate> 
<guid>http://www.askwan.com/post/126/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp; nmake这个工具在visual c++中包含，为了安装一个perl modules 去安装这个么大一个IDE，可能觉得不值得，其实还可以用一些小的比如Dev-Cpp++等一些免费的Windows SDK ，节省时间。<br/>&nbsp;&nbsp;&nbsp;&nbsp;安装完后，设置一下环境变量。<br/>为了最后用源代码安装的modules可以再被其他人使用，需要下载一些unix系统上常见的压缩和打包工具：<br/>下载地址：<a href="http://www.weihenstephan.de/~syring/win32/UnxUtils.html" target="_blank">http://www.weihenstephan.de/~syring/win32/UnxUtils.html</a><br/>这里面包含的工具很多，几乎可以和最小化安装的linux工具包媲美，在windows下使用一样可以发挥其强大杀伤力。<br/><br/>解压到系统目录，同样需要设置一下环境变量。<br/><br/>首先在cpan下载源代码<br/>解压 ，利用perl构建Makefile<br/><br/><div class="code">&gt;perl Makefile.PL</div><br/><br/>然后用nmake编译C源代码,编译前可以带一些编译参数<br/><br/><div class="code">&gt;nmake</div><br/><br/>编译完了，可以测试一下是否编译成功<br/><br/><div class="code">&gt;nmake test</div><br/><br/>如果没有问题 就可以安装<br/><br/><div class="code">&gt;nmake install</div><br/><br/>安装完了，可以构建其发布包<br/><br/><div class="code">&gt;nmake ppd</div><br/><br/>对生成的makefile，可以<br/>make config 检查makefile是否最新<br/>make clean&nbsp;&nbsp;清除本地临时文件<br/>make realclean 清除临时文件 包括./blib <br/><br/><br/>在nmake之后，perl需要的包文件都放在./blib 下<br/>然后压缩<br/><br/><div class="code">&gt;tar cvf xxx.tar.gz blib </div><br/><br/>打包<br/><br/><div class="code">&gt;gizp --best xxx..tar.gz </div><br/><br/>生成ppd文件<br/><br/><div class="code">&gt;nmake ppd</div><br/><br/>然后对生存的ppd文件进行稍微修改，就可以分发给其他人使用。<br/><br/><hr/><hr/><hr/><br/>下面以Mail-SendEasy为例实做<br/><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">C:&#92;Mail-SendEasy-1.2>perl Makefile.PL<br/>Checking if your kit is complete...<br/>Looks good<br/>Writing Makefile for Mail::SendEasy</div></div><br/><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content"><br/>C:&#92;Mail-SendEasy-1.2>nmake<br/><br/>Microsoft (R) Program Maintenance Utility&nbsp;&nbsp; Version 6.00.8168.0<br/>Copyright (C) Microsoft Corp 1988-1998. All rights reserved.<br/><br/>cp lib/Mail/SendEasy/Base64.pm blib&#92;lib&#92;Mail&#92;SendEasy&#92;Base64.pm<br/>cp lib/Mail/SendEasy/AUTH.pm blib&#92;lib&#92;Mail&#92;SendEasy&#92;AUTH.pm<br/>cp lib/Mail/SendEasy/IOScalar.pm blib&#92;lib&#92;Mail&#92;SendEasy&#92;IOScalar.pm<br/>cp lib/Mail/SendEasy.pm blib&#92;lib&#92;Mail&#92;SendEasy.pm<br/>cp lib/Mail/SendEasy/SMTP.pm blib&#92;lib&#92;Mail&#92;SendEasy&#92;SMTP.pm</div></div><br/><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">C:&#92;Mail-SendEasy-1.2>nmake test<br/><br/>Microsoft (R) Program Maintenance Utility&nbsp;&nbsp; Version 6.00.8168.0<br/>Copyright (C) Microsoft Corp 1988-1998. All rights reserved.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C:&#92;Perl&#92;bin&#92;perl.exe "-Iblib&#92;lib" "-Iblib&#92;arch" test.pl<br/>1..6<br/># Running under perl version 5.010000 for MSWin32<br/># Win32::BuildNumber 1004<br/># Current time local: Sat Nov&nbsp;&nbsp;1 11:03:28 2008<br/># Current time GMT:&nbsp;&nbsp; Sat Nov&nbsp;&nbsp;1 03:03:28 2008<br/># Using Test.pm version 1.25<br/>ok 1<br/><br/>----------------<br/>SMTP SERVER for the tests: mail.139.com<br/>USERNAME: 13800138000<br/>PASSWORD: askwan<br/>FROM: 13800138000@139.com<br/>TO: askwa@yahoo.cn<br/><br/>----------------<br/>SETS:<br/>&nbsp;&nbsp;host: mail.139.com<br/>&nbsp;&nbsp;user: 13800138000<br/>&nbsp;&nbsp;pass: askwan<br/>&nbsp;&nbsp;from: 13800138000@139.com<br/>&nbsp;&nbsp;to:&nbsp;&nbsp; askwan@yahoo.cn<br/>----------------<br/>ok 2<br/>not ok 3<br/># Failed test 3 in test.pl at line 62<br/>#&nbsp;&nbsp;test.pl line 62 is:&nbsp;&nbsp; ok($status) ;<br/>Invalid recipient: 13800138000## AUTH TESTS:<br/>ok 4<br/>ok 5<br/>ok 6<br/><br/>The End! By!</div></div><br/><br/><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">C:&#92;Mail-SendEasy-1.2>nmake install<br/><br/>Microsoft (R) Program Maintenance Utility&nbsp;&nbsp; Version 6.00.8168.0<br/>Copyright (C) Microsoft Corp 1988-1998. All rights reserved.<br/><br/>Installing C:&#92;Perl&#92;html&#92;site&#92;lib&#92;Mail&#92;SendEasy.html<br/>Installing C:&#92;Perl&#92;html&#92;site&#92;lib&#92;Mail&#92;SendEasy&#92;AUTH.html<br/>Installing C:&#92;Perl&#92;html&#92;site&#92;lib&#92;Mail&#92;SendEasy&#92;SMTP.html<br/>Installing C:&#92;Perl&#92;site&#92;lib&#92;Mail&#92;SendEasy.pm<br/>Installing C:&#92;Perl&#92;site&#92;lib&#92;Mail&#92;SendEasy&#92;AUTH.pm<br/>Installing C:&#92;Perl&#92;site&#92;lib&#92;Mail&#92;SendEasy&#92;Base64.pm<br/>Installing C:&#92;Perl&#92;site&#92;lib&#92;Mail&#92;SendEasy&#92;IOScalar.pm<br/>Installing C:&#92;Perl&#92;site&#92;lib&#92;Mail&#92;SendEasy&#92;SMTP.pm<br/>Appending installation info to C:&#92;Perl&#92;lib/perllocal.pod</div></div><br/><br/>生成ppd文件<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">C:&#92;Mail-SendEasy-1.2>nmake ppd<br/><br/>Microsoft (R) Program Maintenance Utility&nbsp;&nbsp; Version 6.00.8168.0<br/>Copyright (C) Microsoft Corp 1988-1998. All rights reserved.</div></div><br/>打包<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">C:&#92;Mail-SendEasy-1.2>tar cvf Mail-SendEasy-1.2.tar blib<br/>blib/<br/>blib/arch/<br/>blib/arch/.exists<br/>blib/arch/auto/<br/>blib/arch/auto/Mail/<br/>blib/arch/auto/Mail/SendEasy/<br/>blib/arch/auto/Mail/SendEasy/.exists<br/>blib/bin/<br/>blib/bin/.exists<br/>blib/html/<br/>blib/html/site/<br/>blib/html/site/lib/<br/>blib/html/site/lib/Mail/<br/>blib/html/site/lib/Mail/SendEasy/<br/>blib/html/site/lib/Mail/SendEasy/AUTH.html<br/>blib/html/site/lib/Mail/SendEasy/SMTP.html<br/>blib/html/site/lib/Mail/SendEasy.html<br/>blib/lib/<br/>blib/lib/auto/<br/>blib/lib/auto/Mail/<br/>blib/lib/auto/Mail/SendEasy/<br/>blib/lib/auto/Mail/SendEasy/.exists<br/>blib/lib/Mail/<br/>blib/lib/Mail/.exists<br/>blib/lib/Mail/SendEasy/<br/>blib/lib/Mail/SendEasy/AUTH.pm<br/>blib/lib/Mail/SendEasy/Base64.pm<br/>blib/lib/Mail/SendEasy/IOScalar.pm<br/>blib/lib/Mail/SendEasy/SMTP.pm<br/>blib/lib/Mail/SendEasy.pm<br/>blib/man1/<br/>blib/man1/.exists<br/>blib/man3/<br/>blib/man3/.exists<br/>blib/script/<br/>blib/script/.exists</div></div><br/>压缩<br/>C:&#92;Mail-SendEasy-1.2>gzip --best Mail-SendEasy-1.2.tar<br/><br/>得到的Mail-SendEasy.ppd文件<br/><br/><div class="code">&lt;SOFTPKG NAME=&quot;Mail-SendEasy&quot; VERSION=&quot;1,2,0,0&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;TITLE&gt;Mail-SendEasy&lt;/TITLE&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;ABSTRACT&gt;Send plain/html e-mails through SMTP servers (platform independent). Supports SMTP authentication and attachments.&lt;/ABSTRACT&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;AUTHOR&gt;Graciliano M. P. &amp;lt;gm@virtuasites.com.br&amp;gt;&lt;/AUTHOR&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;IMPLEMENTATION&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;OS NAME=&quot;MSWin32&quot; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ARCHITECTURE NAME=&quot;MSWin32-x86-multi-thread-5.10&quot; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt; CODEBASE HREF=&quot;&quot; /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/IMPLEMENTATION&gt;<br/>&lt;/SOFTPKG&gt;</div><br/>将 <br/><div class="code">&lt;CODEBASE HREF=&quot;&quot; /&gt;</div>修改为 <br/><div class="code">&lt;CODEBASE HREF=&quot;Mail-SendEasy-1.2.tar.gz&quot; /&gt;</div>这样Mail-SendEasy.ppd和Mail-SendEasy-1.2.tar.gz 就是我们需要的东西了<br/>&nbsp;&nbsp; <br/>Tags - <a href="http://www.askwan.com/tags/perl/" rel="tag">perl</a> , <a href="http://www.askwan.com/tags/nmake/" rel="tag">nmake</a> , <a href="http://www.askwan.com/tags/module/" rel="tag">module</a> , <a href="http://www.askwan.com/tags/windows/" rel="tag">windows</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/125/</link>
<title><![CDATA[perl发送邮件]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Fri, 31 Oct 2008 08:36:58 +0000</pubDate> 
<guid>http://www.askwan.com/post/125/</guid> 
<description>
<![CDATA[ 
	Mail::SendEasy这个模块在cpan邮件发送系列关注度比较高，用来发送邮件相当easy<br/>它支持plain/html格式邮件内容，通过SMTP服务器发送邮件，对系统平台没有依赖，<br/>支持附件发送和SMTP认证。<br/><br/>用法可以看它的perldoc<br/>就它的例子做些解释<br/><br/><div class="code"> use Mail::SendEasy ; <br/><br/>&nbsp;&nbsp;my $mail = new Mail::SendEasy(<br/>&nbsp;&nbsp;smtp =&gt; &#039;localhost&#039; ,&nbsp;&nbsp; #SMTP服务器<br/>&nbsp;&nbsp;user =&gt; &#039;foo&#039; ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #认证用户名<br/>&nbsp;&nbsp;pass =&gt; 123 ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #认证密码<br/>&nbsp;&nbsp;) ;<br/>#SMTP端口默认为25，连接超时时间默认为120秒<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;my $status = $mail-&gt;send(<br/>&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#039;sender@foo.com&#039; ,&nbsp;&nbsp; #发送者邮件地址<br/>&nbsp;&nbsp;from_title =&gt; &#039;Foo Name&#039; ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #发件人名字或标题<br/>&nbsp;&nbsp;reply&nbsp;&nbsp; =&gt; &#039;re@foo.com&#039; ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #回复信件地址<br/>&nbsp;&nbsp;error&nbsp;&nbsp; =&gt; &#039;error@foo.com&#039; ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#发送出错信息地址<br/>&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#039;recp@domain.foo&#039; ,&nbsp;&nbsp;&nbsp;&nbsp; #接受邮件地址<br/>&nbsp;&nbsp;cc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &#039;recpcopy@domain.foo&#039; , # 接受邮件副本地址<br/>&nbsp;&nbsp;subject =&gt; &quot;MAIL Test&quot; ,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 邮件主题<br/>&nbsp;&nbsp;msg&nbsp;&nbsp;&nbsp;&nbsp; =&gt; &quot;The Plain Msg...&quot; ,&nbsp;&nbsp;#文本格式邮件内容<br/>&nbsp;&nbsp;html&nbsp;&nbsp;&nbsp;&nbsp;=&gt; &quot;&lt;b&gt;The HTML Msg...&lt;/b&gt;&quot; , #html格式邮件内容，有这个则msg无效<br/>&nbsp;&nbsp;msgid&nbsp;&nbsp; =&gt; &quot;0101&quot; , #给邮件头加一个ID号<br/>&nbsp;&nbsp;) ;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;if (!$status) { print $mail-&gt;error ;}</div><br/>Tags - <a href="http://www.askwan.com/tags/perlmail%253A%253Asendeasy/" rel="tag">perlmail::sendeasy</a> , <a href="http://www.askwan.com/tags/%25E5%258F%2591%25E9%2580%2581%25E9%2582%25AE%25E4%25BB%25B6/" rel="tag">发送邮件</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/124/</link>
<title><![CDATA[perl 的msn bot]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Fri, 31 Oct 2008 06:50:12 +0000</pubDate> 
<guid>http://www.askwan.com/post/124/</guid> 
<description>
<![CDATA[ 
	有人已经做好了相关底层模块<br/>下载<a href="attachment.php?fid=143">Click to download</a><br/>在使用中发现必须要安装Crypt::SSLeay这个模块，不然无法联接<br/>用ppm安装Crypt::SSLeay<br/>>install <a href="http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd" target="_blank">http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd</a><br/><br/>包里面有个写好的测试文件echobot.pl，可以测试下；<br/>利用这个，可以根据自己需要 开发基于perl的msn机器人 <br/>Tags - <a href="http://www.askwan.com/tags/perl/" rel="tag">perl</a> , <a href="http://www.askwan.com/tags/msn/" rel="tag">msn</a> , <a href="http://www.askwan.com/tags/bot/" rel="tag">bot</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/122/</link>
<title><![CDATA[perl 几个常用程序模板]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Sat, 18 Oct 2008 13:32:36 +0000</pubDate> 
<guid>http://www.askwan.com/post/122/</guid> 
<description>
<![CDATA[ 
	1.Get form data<br/><div class="code">if ($ENV{&#039;REQUEST_METHOD&#039;} eq &#039;POST&#039;) {<br/>&nbsp;&nbsp;read(STDIN, $buffer, $ENV{&#039;CONTENT_LENGTH&#039;});<br/>} else {<br/>&nbsp;&nbsp;$buffer = $ENV{&#039;QUERY_STRING&#039;};<br/>}<br/>@pairs = split(/&amp;/, $buffer);<br/>foreach $pair (@pairs) {<br/>&nbsp;&nbsp;($name, $value) = split(/=/, $pair);<br/>&nbsp;&nbsp;$name =~ tr/+/ /;<br/>&nbsp;&nbsp;$name =~ s/%(&#91;a-fA-F0-9&#93;&#91;a-fA-F0-9&#93;)/pack(&quot;C&quot;, hex($1))/eg;<br/>&nbsp;&nbsp;$value =~ tr/+/ /;<br/>&nbsp;&nbsp;$value =~ s/%(&#91;a-fA-F0-9&#93;&#91;a-fA-F0-9&#93;)/pack(&quot;C&quot;, hex($1))/eg;<br/>&nbsp;&nbsp;$FORM{$name} = $value;<br/>}</div><br/><br/>2.sendmail<br/><div class="code">open (MAIL,&quot;&#124;/usr/lib/sendmail&quot;);<br/>print MAIL &quot;To: to&#92;@e.mail&#92;n&quot;;<br/>print MAIL &quot;From: from&#92;@e.mail&#92;n&quot;;<br/>print MAIL &quot;Subject: Subject&#92;n&#92;n&quot;;<br/>print MAIL &quot;Body&#92;n&quot;;<br/>close MAIL;</div><br/><br/><br/>3.Get host name by IP address<br/><div class="code">$ip = $ENV{&#039;REMOTE_ADDR&#039;};<br/>@digits = split (/&#92;./, $ip);<br/>$address = pack (&quot;C4&quot;, @digits);<br/>$host = gethostbyaddr ($address, 2);</div><br/>Tags - <a href="http://www.askwan.com/tags/perl/" rel="tag">perl</a> , <a href="http://www.askwan.com/tags/template/" rel="tag">template</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/120/</link>
<title><![CDATA[用eclipse配置一套windows下perl开发环境]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Scripts]]></category>
<pubDate>Tue, 14 Oct 2008 09:26:30 +0000</pubDate> 
<guid>http://www.askwan.com/post/120/</guid> 
<description>
<![CDATA[ 
	各个组件：Eclipse + ActiveState ActivePerl + E.P.I.C +PadWalker<br/><br/>Eclipse下载：<a href="http://www.eclipse.org/downloads/index.php" target="_blank">http://www.eclipse.org/downloads/index.php</a> <br/><br/>ActivePerl 下载: <a href="http://www.activestate.com/downloads/index.mhtml" target="_blank">http://www.activestate.com/downloads/index.mhtml</a><br/>EPIC&nbsp;&nbsp;: <a href="http://e-p-i-c.sourceforge.net/updates/" target="_blank">http://e-p-i-c.sourceforge.net/updates/</a><br/>这个用Eclipse的“Software and Updates”直接升级安装<br/>打开Eclipse<br/>“Help > Software and Updates > Find and Install……“<br/>添加地址：<a href="http://e-p-i-c.sourceforge.net/updates" target="_blank">http://e-p-i-c.sourceforge.net/updates</a><br/>如果想用测试版本的EPIC就用<a href="http://www.epic-ide.org/updates/testing" target="_blank">http://www.epic-ide.org/updates/testing</a><br/>会自动下载安装E.P.I.C插件。<br/>安装好后 ，根据需要个性化配置一些参数<br/><a href="http://www.askwan.com/attachment.php?fid=138" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=138" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>padwalker: <a href="http://www.bribes.org/perl/ppm/" target="_blank">http://www.bribes.org/perl/ppm/</a><br/>这个用于Eclipse调试perl程序的，用“Perl Package Manager”安装<br/><br/>运行Perl Package Manager<br/>提示在PPM提示下install padwalker<br/><a href="http://www.askwan.com/attachment.php?fid=137" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=137" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>下面来个传说中大家都非常熟悉的hello world！<br/><a href="http://www.askwan.com/attachment.php?fid=139" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=139" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>OK，just all！～<br/>开始写perl程序吧！<br/>Tags - <a href="http://www.askwan.com/tags/eclipseactivestate/" rel="tag">eclipseactivestate</a> , <a href="http://www.askwan.com/tags/activeperl/" rel="tag">activeperl</a> , <a href="http://www.askwan.com/tags/e.p.i.c/" rel="tag">e.p.i.c</a> , <a href="http://www.askwan.com/tags/padwalker/" rel="tag">padwalker</a> , <a href="http://www.askwan.com/tags/epic/" rel="tag">epic</a>
]]>
</description>
</item>
</channel>
</rss>