ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久av电影,蜜臀久久久99精品久久久久久,jizz视频在线观看http://www.aygfsteel.com/Skynet/category/37728.htmlzh-cnMon, 14 Dec 2009 13:17:17 GMTMon, 14 Dec 2009 13:17:17 GMT60shell txt 分析ž®ç»“http://www.aygfsteel.com/Skynet/archive/2009/11/26/303750.html刘凯æ¯?/dc:creator>刘凯æ¯?/author>Thu, 26 Nov 2009 03:27:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/11/26/303750.htmlhttp://www.aygfsteel.com/Skynet/comments/303750.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/11/26/303750.html#Feedback1http://www.aygfsteel.com/Skynet/comments/commentRss/303750.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/303750.html




]]>
perl 使用ž®ç»“http://www.aygfsteel.com/Skynet/archive/2009/11/11/301957.html刘凯æ¯?/dc:creator>刘凯æ¯?/author>Wed, 11 Nov 2009 05:36:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/11/11/301957.htmlhttp://www.aygfsteel.com/Skynet/comments/301957.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/11/11/301957.html#Feedback0http://www.aygfsteel.com/Skynet/comments/commentRss/301957.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/301957.html



环境讄¡½®åQšå¦‚果有¾pȝ»Ÿå­—符¾~–码 å†²çªåQŒåœ¨å½“前
vim 
~/.bash_profile ä¸‹åŠ å…?br /> LANG=zh_CN
LC_ALL
=zh_CN.UTF8
export LANG LC_ALL


字符¾~–码转化
:
  
# ç”±decode解析,默认会ä‹Éç”?nbsp;¾pȝ»Ÿ¾~–码 è¾“出
  # åœ?nbsp;linux ä¸‹é¢å…¶å®ž½{‰ä­h encode("UTF-8", decode("GBK",$_));

perl -MEncode -ne 'print decode("GBK",$_);'  file.txt

判断数据是否½W¦åˆè¾“出åQ?br />   echo 
"121" |perl -ne 'print if /2/;'   #print 123

匚w…æ­£åˆ™group输出
:
  echo 
"abc121a" |perl -ne 'print $1 if /(\D+)/;'   #print abc

大小写è{化:
  
# å…¨éƒ¨ å¤§å°è½¬å°å†?/span>
  echo "ABC1C2cGJ" |perl -ne 'tr/[A-Z]/[a-z]/; print ;'  #print
  # "L ä¸­é—´å…¨éƒ¨ž®å†™ "E   ; "U ä¸­é—´å…¨éƒ¨å¤§å†™ "E    ↓

  echo "ABC1C2cGJ" |perl -ne 's/(.*?1)(.*?)(2.*?)/$1\L$2\E$3/g; print ;'  #print ABC1c2cGJ



源文件替换:
   echo 
"ABC 123" > te
   sed 
-'s/ABC/abc/g' te
       æˆ–è€?nbsp;
: perl --pe 's/ABC/abc/g' te
   cat te 
# print abc 123


外部传参
:
 
tt="cc"
  echo "gg" |perl -ne ' print "'$tt'" ;'
  输出åQšcc

  perl -e  'print "$ARGV[0]\t$ARGV[1]\n" '  'par1' 'par2'  #print par1 par2
 


重复列输�/span>:
   cat xx
.txt | awk -F"    " 'a[$1]++'
   æˆ–è€?nbsp;
:   
   cat xx
.txt |perl -F"\t" -ane  '$a{$F[1]}++;END{
        while(($k,$v)=each(%a)){ print "$k = $v "n"; }
    }
'
    ¾l“果比如åQ?br />        ç™‘Öº¦æ‰‹æœºåœ¨çº¿ 
= 7
       ä¸­å…´ 
= 2
       ä¸‡ä¿¡æ’é€?nbsp; 
= 2
   ˜q˜æ¯”如:查看各用æˆ?nbsp;有多ž®‘个˜q›ç¨‹
   ps 
-ef |perl  -ane  '$a{$F[0]}++;END{
      while(($k,$v)=each(%a)){ print "$k = $v \n"; }
   }
'

æ±?nbsp;两项  äº¤é›†
cat BuyMusic
.20090525| perl -ne 'BEGIN{
 $p1="600902000005416300";
 $p2="600902000006211983";
 $p_col=30;
 $mob_col=0;

}END{
  my @inter = grep {$a{$_}} keys %b; # æ±‚交é›?br />   #print $p1,"=",join(",",keys %a),""n";
  #print $p2,"=",join(",",keys %b),""n";
  print "产品 $p1:",scalar keys %a," "n";
  print "产品 $p2:",scalar keys %b," "n";
  print "交集:",scalar @inter," "n";
}
chomp;
@lis=split /\|<>\|/ ;
if( $lis[ $p_col] eq $p1 ){
   $a{$lis[$mob_col]}++;
}
if( $lis[$p_col] eq $p2 ){
   $b{$lis[$mob_col]}++;
}
'

 

关键å­?nbsp;Top 
10 åQŒè¾“出源文本数据 :
perl 
-e  '
  my $num=10; # top 10
  open(MYFILE, "<$ARGV[0]");
  open(MYFILE2, "<$ARGV[0]");

  # å…³é”®å­—列æ•?br />   while(<MYFILE>){@lis=split /\|<>\|/;$fck{$lis[1]}++ }

  foreach $k (sort { $fck{$b} <=> $fck{$a} } keys %fck){
     if(++$row>$num){last; }
     $arr[@arr] = $k;
  }
 
  while(<MYFILE2>){@lis=split /\|<>\|/;
     if(grep { $arr[$_] eq $lis[1] } 0..$#arr){
       # print "$fck{$lis[1]}:$_"; #å¸?nbsp;关键字出现次数输å‡?br />        print ;
     }
  }
' qdSearch.log






]]>
hadoop streaming( hadoop + perl )ž®è¯•http://www.aygfsteel.com/Skynet/archive/2009/09/25/296420.html刘凯æ¯?/dc:creator>刘凯æ¯?/author>Fri, 25 Sep 2009 06:33:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/09/25/296420.htmlhttp://www.aygfsteel.com/Skynet/comments/296420.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/09/25/296420.html#Feedback0http://www.aygfsteel.com/Skynet/comments/commentRss/296420.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/296420.html   http://hadoop.apache.org/common/docs/r0.15.2/streaming.html

注意
  目前 streaming å¯?linux pipe #也就æ˜?cat |wc -l ˜q™æ ·çš„管é?不支持,但不妨碍我们使用perl,python 行式命ä×oåQï¼
  原话æ˜?åQ?br />   Can I use UNIX pipes? For example, will -mapper "cut -f1 | sed s/foo/bar/g" work?
    Currently this does not work and gives an "java.io.IOException: Broken pipe" error.
    This is probably a bug that needs to be investigated.
  但如果你是强烈的 linux shell pipe 发烧å?åQ?参考下é?br />   $> perl -e 'open( my $fh, "grep -v null tt |sed -n 1,5p |");while ( <$fh> ) {print;} '
     #不过我没‹¹‹è¯•通过 åQï¼

环境 åQšhadoop-0.18.3
$> find . -type f -name "*streaming*.jar"
./contrib/streaming/hadoop-0.18.3-streaming.jar


‹¹‹è¯•数据åQ?br />
-bash-3.00$ head tt 
null    false    3702    208100
6005100    false    70    13220
6005127    false    24    4640
6005160    false    25    4820
6005161    false    20    3620
6005164    false    14    1280
6005165    false    37    7080
6005168    false    104    20140
6005169    false    35    6680
6005240    false    169    32140
......


˜qè¡ŒåQ?br />
c1="  perl -ne  'if(/.*\t(.*)/){\$sum+=\$1;}END{print \"\$sum\";}'  "
# 注意 ˜q™é‡Œ $ 要写æˆ?\$    " 写成 \"
echo $c1; # 打印输出  perl -ne 'if(/.*"t(.*)/){$sum+=$1;}END{print $sum;}'
hadoop jar hadoop-0.18.3-streaming.jar
  
-input file:///data/hadoop/lky/jar/tt 
   -
mapper   "/bin/cat" 
   -
reducer "$c1" 
  
-output file:///tmp/lky/streamingx8


¾l“æžœ:
cat /tmp/lky/streamingx8/*
1166480

本地˜qè¡Œè¾“出:
perl -ne 'if(/.*"t(.*)/){$sum+=$1;}END{print $sum;}' < tt
1166480

¾l“果正确!!!!


命ä×o自带文档åQ?br />
-bash-3.00$ hadoop jar hadoop-0.18.3-streaming.jar -info
09/09/25 14:50:12 ERROR streaming.StreamJob: Missing required option -input
Usage: $HADOOP_HOME
/bin/hadoop [--config dir] jar \
          $HADOOP_HOME
/hadoop-streaming.jar [options]
Options:
  
-input    <path>     DFS input file(s) for the Map step
  
-output   <path>     DFS output directory for the Reduce step
  
-mapper   <cmd|JavaClassName>      The streaming command to run
  
-combiner <JavaClassName> Combiner has to be a Java class
  
-reducer  <cmd|JavaClassName>      The streaming command to run
  
-file     <file>     File/dir to be shipped in the Job jar file
  
-dfs    <h:p>|local  Optional. Override DFS configuration
  
-jt     <h:p>|local  Optional. Override JobTracker configuration
  
-additionalconfspec specfile  Optional.
  
-inputformat TextInputFormat(default)|SequenceFileAsTextInputFormat|JavaClassName Optional.
  
-outputformat TextOutputFormat(default)|JavaClassName  Optional.
  
-partitioner JavaClassName  Optional.
  
-numReduceTasks <num>  Optional.
  
-inputreader <spec>  Optional.
  
-jobconf  <n>=<v>    Optional. Add or override a JobConf property
  
-cmdenv   <n>=<v>    Optional. Pass env.var to streaming commands
  
-mapdebug <path>  Optional. To run this script when a map task fails 
  
-reducedebug <path>  Optional. To run this script when a reduce task fails 
  
-cacheFile fileNameURI
  
-cacheArchive fileNameURI
  
-verbose




]]>
部分高çñ”正则ç‰ÒŽ€?使用http://www.aygfsteel.com/Skynet/archive/2009/08/27/292835.html刘凯æ¯?/dc:creator>刘凯æ¯?/author>Thu, 27 Aug 2009 08:04:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/08/27/292835.htmlhttp://www.aygfsteel.com/Skynet/comments/292835.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/08/27/292835.html#Feedback0http://www.aygfsteel.com/Skynet/comments/commentRss/292835.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/292835.html一些特ŒDŠæ­£åˆ™å…ƒå­—符说明:
 
1. *? å’?nbsp;+? å’?nbsp;{n,}?  æ‡’惰匚w… 
  
1.1 éžæ‡’æƒ?nbsp;                  ↓
    echo 
"ab2c121a" |perl -ne 'print $1 if /(.*)"d/;'   #print ab2c12
   
1.2 æ‡’惰 ã€€ã€€ã€€ã€€ã€€ã€€ã€€ã€€ã€€ã€€ã€€ã€€ã€€ã€€ã€€ã€€      ↓
    echo 
"ab2c121a" |perl -ne 'print $1 if /(.*?)"d/;'   #print ab
 
2.  å›žæº¯å¼•用和前后查æ‰?/span>:
  
2.1 å‘前查找   (?=..)                   ↓
    echo 
"ab2c121a" |perl -ne 'print $1 if /(.*?)(?=2)/;'  #print ab
  
2.2 å‘后查找 (?<=..)  ã€€        ã€€ã€€ã€€ã€€ã€€ã€€↓
    echo 
"ab2c121a" |perl -ne 'print $1 if /(?<=2)(.*)(?=2)/;' #print c1
  
2.3 è´Ÿå‘-å‰?/span>/å?nbsp;查找  (?!..) (?<!..)   
   
#不能匚w… ..                               ↓
   
echo "ab2c121a" |perl -ne 'print $1 if /(?<!2)(c.*)/;'    #print æ—?/span>
   
echo "ab2c121a" |perl -ne 'print $1 if /(?<!3)(c.*)/;'    #print c121a
  
2.4 æ¡äšg ?()  = if   ?()| = if else
   
# ?()  ä¾‹å¦‚  <p> </p> å¿…须同时出现                ↓      ↓  
   
echo "<p>xx</p>"|perl -ne 'print $2  if /(<p>)?("w*)(?(1)<"/p>)/'   #print  xx
   
echo "<p>xx"|perl -ne 'print $2,""n" if /(<p>)?("w*)(?(1)<"/p>)/'    #print ½I?/span>
   
echo "xx"|perl -ne 'print $2 if /(<p>)?("w*)(?(1)<"/p>)/'    #print xx
    # ?()|  ä¾‹å¦‚ ˜q˜æ˜¯ä¸Šé¢çš„, 
    # å½?nbsp;æœ?lt;p> å¯ä»¥æŽ?lt;/p> ä¹Ÿå¯ä»¥æŽ¥ æ•°å­—¾l“å°¾                            ↓

echo 
"<p>xx1</p>"|perl -ne 'print $2  if /(<p>)?("w*)(?(1)<"/p>|"d)/'  #print xx1
echo 
"<p>xx1"|perl -ne 'print $2  if /(<p>)?("w*)(?(1)<"/p>|"d)/'    # print xx






]]>
perl vs php (�http://www.aygfsteel.com/Skynet/archive/2009/05/15/270947.html刘凯�/dc:creator>刘凯�/author>Fri, 15 May 2009 15:09:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/05/15/270947.htmlhttp://www.aygfsteel.com/Skynet/comments/270947.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/05/15/270947.html#Feedback0http://www.aygfsteel.com/Skynet/comments/commentRss/270947.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/270947.html

Perl/Php Translation

arrays

hashes

data structures

array split/join

case conversion

string comparisons

functions

string matching operations

basename/dirname

environment variables

POST/GET parameters

HTML elements

URL encode

MySQL database access


�Perl arrays �/th> �Php arrays �/th>
@a = ();

@a = ( 'xx', 11, 33.5, );

@a = 12..33;

$a[2] = 'something';

$len = scalar(@a);
# or
$len = @a;

@a3 = ('xx', @a1, @a2);

($x, $y) = @a;

$a[@a] = 'new'; # push

push
pop
shift
unshift
splice

foreach $i (@a) { .. }
$a = array();

$a = array( 'xx', 11, 33.5, );

$a = range(12,33);

$a[2] = 'something';

$len = count($a);



$a3 = array_merge('xx', $a1, $a2);

list($x, $y) = $a;

$a[] = 'new'; # push

array_push
array_pop
array_shift
array_unshift
array_splice

foreach ($a as $i) { .. }
�Perl hashes �/th> �Php hashes �/th>
%h = ();

%h = ( 'x' => 'y',
'z' => 'w',
);

$h{'x'} = 7;

while (($key,$value) = each(%h))
{ .. }

$a = keys(%h);
$b = values(%h);

delete $h{'x'};
$h = array();

$h = array( 'x' => 'y',
'z' => 'w',
);

$h['x'] = 7;

foreach ($h as $key => $value)
{ .. }

$a = array_keys($h);
$b = array_values($h);

unset( $h['x'] );

�Perl data structures �/th> �Php data structures �/th>
%h = ('a'=>13, 'b'=>25);
@x = ('hi', 'there', 'all',);

@mix = ( %h, @x,
[33..39],
{ x=>15, yy=>23, },
);

$mix[0]->{'b'} # == 25
$mix[0]{'b'} # == 25
$mix[2]->[2] # == 35
$mix[2][2] # == 35

$h = array('a'=>13, 'b'=>25);
$x = array('hi', 'there', 'all',);

$mix = array($h, $x,
range(33,39),
array('x'=>15, 'yy'=>23),
);

$mix[0]['b'] # == 25

$mix[2][2] # == 35

�Perl array split/join �/th> �Php array split/join �/th>
@a = split( '|', $s );

@a = split( 's+', $s );


$s = join( '|', @a );
$a = preg_split( '/|/', $s,
-1, PREG_SPLIT_NO_EMPTY );
$a = preg_split( '/s+/', $s,
-1, PREG_SPLIT_NO_EMPTY );

$s = join( '|', $a );
�Perl case conversion �/th> �Php case conversion �/th>
$s = lc($s);
$s = uc($s);

$s =~ tr/a-z/A-Z/;
$s = strtolower($s);
$s = strtoupper($s);


�Perl string comparisons �/th> �Php string comparisons �/th>
$s1 eq $s2



$s1 lt $s2
strcmp($s1,$s2) == 0
# or
$s1 === $s2

strcmp($s1,$s2) < 0
�Perl functions �/th> �Php functions �/th>
sub foo {
my @args = @_;
}

sub foo {
$x = 5;
}





foo2( @a, %h );
function foo() {
$args = func_get_args();
}

function foo() {
global $x;
$x = 5;
}

function foo2($x, $y) {
}

foo2( $a, $h );
�Perl string matching operations �/th> �Php string matching operations �/th>
$s =~ m/(w+)/;
$substr = $1;

@all = ($s =~ m/(w+)/g);


$s =~ s/s+/X/;
$s =~ s/s+/X/g;

$s =~ s/^s+|s+$//g;
preg_match( "/(w+)/", $s, $match );
$substr = $match[1];

preg_match_all( "/(w+)/", $s, $match );
$all = $match[0];

$s = preg_replace( "/s+/", 'X', $s, 1 );
$s = preg_replace( "/s+/", 'X', $s );

$s = trim($s);
�Perl basename/dirname �/th> �Php basename/dirname �/th>
use File::Basename;

$b = basename($path);
$d = dirname($path);
 

$b = basename($path);
$d = dirname($path);
�Perl environment variables �/th> �Php environment variables �/th>
%ENV

$ENV{REQUEST_METHOD}

$ARGV[$i]

$0
$_SERVER

$_SERVER[REQUEST_METHOD]

$argv[$i+1]

$argv[0] # Php/CGI only
�Perl POST/GET parameters �/th> �Php POST/GET parameters �/th>
#form/hyperlink parameters:
# s : single-valued
# m : multi-valued

use CGI (:standard);




$s = param('s');
@m = param('m');

@param_names = param();
$num_params = param();
#form/hyperlink parameters:
# s : single-valued
# m[] : multi-valued
# (such as multi-selections
# and checkbox groups)

$PARAM
= array_merge($_GET, $_POST);

$s = $PARAM['s']; # a scalar
$m = $PARAM['m']; # an array

$param_names = array_keys($PARAM);
$num_params = count($PARAM);
�Perl HTML elements �/th> �Php HTML elements �/th>
use CGI (:standard);







$ref = "x.cgi";
a({href=>$ref}, "yy")

textfield({name=>"yy", size=>5})

password({name=>"yy", size=>5})

textarea({name=>"yy",
cols=>5, rows=>2})

submit({value=>"yy"})

button( {name=>"xx",
value=>"yy",
onclick=>"submit()",
}
)

%labels = (0=>'a',1=>'q',2=>'x');
popup_menu( { name=>"xx",
values=>[0..2],
labels=>%labels,
size=>4,
}
)


@a = ('xx','yy','zz');
radio_group( { name=>'nn',
values=> @a,
default=>'_',
linebreak=>1,
}
)

%labels = ('xx'=>'L1','yy'=>'L2');
@a = keys( %labels );
checkbox_group( { name=>'nn',
values=> @a,
labels=> %labels,
}
)

table(
Tr(
[
td(['a','b']),
td(['x','y']),
]
)
)

# The Perl/CGI functions have the
# additional property of "stability"
# when used in reentrant forms.
# The values of the HTML elements are
# set according to the incoming
# parameter values for those elements.
# The versions below are not stable.

$ref = "x.php";
<a href="<?php echo $ref?>">yy</a>

<input type=text name=yy size=5>

<input type=password name=yy size=5>

<textarea name=yy cols=5 rows=2>

</textarea>

<input type="submit" value=yy>

<input type="button"
name="xx" value="yy"
onclick="submit()">



<select name="xx" size="4">
<?php
$labels = array(0=>'a',1=>'q',2=>'x');
foreach (range(0,2) as $_)
echo "<option value='$_'>",
$labels[$_];
?>

</select>

$a = array('xx','yy','zz');
foreach ($a as $_)
echo "<input type=radio
name=nn value='$_'>$_<br>";




$labels = array('xx'=>'L1','yy'=>'L2');
foreach (array_keys($labels) as $_)
echo "<input type=checkbox
name=nn value='$_'>",
$labels[$_];



<table>
<tr>
<td>a</td><td>b</td>

</tr>
<tr>
<td>x</td><td>y</td>
</tr>
</table>
�Perl URL encode �/th> �Php URL encode �/th>
use URI::Escape;

uri_escape($val)
uri_unescape($val)
 


urlencode($val)
urldecode($val)
�Perl MySQL database access �/th> �Php MySQL database access �/th>
use DBI;
$dbh = DBI->connect(
'DBI:mysql:test:localhost',
$usr,$pwd
);

$dbh->do( $sql_op )

$query = $dbh->prepare( $sql_op );
$query->execute();

while(
@record = $query->fetchrow() )
{ .. }


$dbh->quote($val)



 
$dbh = mysql_connect(
'localhost', $usr, $pwd
);
mysql_query('USE test')

mysql_query( $sql_op );

$results = mysql_query( $sql_op );


while($record =
mysql_fetch_row($results))
{ .. }


"'" . addslashes($val) . "'"



]]>
perl 使用http://www.aygfsteel.com/Skynet/archive/2009/04/01/263353.html刘凯�/dc:creator>刘凯�/author>Wed, 01 Apr 2009 06:12:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/04/01/263353.htmlhttp://www.aygfsteel.com/Skynet/comments/263353.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/04/01/263353.html#Feedback2http://www.aygfsteel.com/Skynet/comments/commentRss/263353.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/263353.html
对应脚本˜qç”¨åQ?br />   1.  shell  ¾lŸç­¹½Ž¡ç† 脚本的运行。合理结å?crontab ,  ps -ef ,kill ½{‰å‘½ä»¤ã€?br />    2.  perl  处理短小å¿?ã€?br />    3.  python 有比较复杂结构和逻辑的ã€?br />  
本文主要介绍 perl 的行¾U§å‘½ä»¤ä‹Éç”?åQŒåŠ›æ±?çŸ?ž®?å¿?åQ?br />
#最½Ž€å•çš„
$ perl -'print "Hello World\n"'

#处理文äšg è¡?/span>
$ perl --'print $_' file1


#¾~–码转换
#如果 æœ‰éœ€è¦?nbsp;在ä‹É用下  encode("UTF-8", decode("GBK",$_));åœ?nbsp;linux ä¸‹é»˜è®?nbsp;utf-8

perl -MEncode -ne 'print decode("GBK",$_);'  file.txt




#正则使用
   #  if($_=~/.*\/(.*)$/){  print $1 ;}  ˜q™æ˜¯perl 巨方便的地方 $1 xx  
# next LINE è·›_ˆ°ä¸‹ä¸€ä¸ªåó@çŽ?/span>
$ perl --'next LINE unless /pattern/; print $_'


#去除换行 chomp
perl -'print split(/\n/,"asg\n");'


#åƒ?nbsp;awk ä¸€æ ?nbsp;Begin End
$ perl -ne 'END { print $t } @w = /(\w+)/g; $t += @w' file.txt 

#åƒ?nbsp;awk -F"x" ä¸€æ ?nbsp;切割è¡?br /> #-a æ‰“开自动分离 (split)  æ¨¡å¼
#@F ä¸?nbsp;切割后的 æ•°ç»„

perl -F'\t' -ane '
 if($F[1]=~/侃侃/ and $F[2]=~/爱情å•?){
      print "$F[3]\t$F[4]\t$F[5]\n"
  }
' all2_data.sort.st

实际处理åQ?br />  
perl -F'\|\|' -ane '
 my $actor,$music ;
 if  ( $F[3] ){
  $music=$F[2];
  $actor=$F[3];
 }else{
  $music=$F[0];
  $actor=$F[1]; 
 }
  $music =~ tr/[A-Z]/[a-z]/;
  $music =~ s/\s*(.*)\s*\(.*\)/\1/g;
  $actor =~ tr/[A-Z]/[a-z]/;
  $actor =~ s/\s*(.*)\s*\(.*\)/\1/g;
print "$actor-$music\n";
' ring.utf8.txt  |sort -u  > ring.actor_music.sort.utf8.txt &
wc 
-l ring.actor_music.sort.utf8.txt


#åƒ?nbsp;sed ä¸€æ äh›¿æ?br />     # -i å’?sed 一æ ?perl 输出会替换调 æº?file.txt
$ perl --pe 's/\bPHP\b/Perl/g' file.txt


#外部 ä¼ å‚
perl -ne'print "$ARGV[0]\t$ARGV[1]\n" ' file.txt 'par1' 'par2'
    #¾l“æžœ ..  par1     par2 ..



# æŸ¥è¯¢å‡?nbsp;重复åˆ?nbsp;‹Æ¡æ•°åQŒåƈ åˆ—ä‹D出来
cut -d"     "  -2 .collection_mobile.data |perl -ne '
   END{
     while (($key,$value)=each(%a)){print $key,"=",$value,"\n";};
   }BEGIN{ %a =(); } 
   chomp;
   $a{$_}+=1; 
 
'
¾l“æžœ
Ring=532895
CRBT=68500
RingBoxes=880
Song=96765

 
#一些实é™?/span>使用 :)
find . -name "*.mp3" | perl -pe 's/.\/\w+-(\w+)-.*/$1/' | sort | uniq
   perl -F'\t' -ane 'if($F[1]=~/$ARGV[0]/ and $F[2]=~/$ARGV[1]/){print "$F[3]\t$F[4]\t$F[5]\n"}' all2_data.sort.st '侃侃' '爱情å•?

#ä¸?nbsp;find åˆç”¨ -e $ARGV[0] 扚w‡ æŠ?excel 倒成 文本 格式
find . -maxdepth 1 -name "*xls" -exec perl -'
require("/home/xj_liukaiyi/src/perl/excel/excelUtil.pl");
my $file=$ARGV[0];
sub myRead{
  
my $str = "";
  
for $tmp(@_){
    
$str="$str$tmp\t";
  }
  
$str="$str\n";
  
system "echo \"$str\" >> $file.data ";
}
&parse_excel("$file",0,\&myRead);
print "$file\n";
' {} \;




参考:
http://www.ibm.com/developerworks/cn/linux/sdk/perl/l-p101/index.html
http://bbs.chinaunix.net/viewthread.php?tid=499434





]]>
perl 一些有用的 util http://www.aygfsteel.com/Skynet/archive/2009/03/17/260234.html刘凯�/dc:creator>刘凯�/author>Tue, 17 Mar 2009 05:49:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/03/17/260234.htmlhttp://www.aygfsteel.com/Skynet/comments/260234.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/03/17/260234.html#Feedback1http://www.aygfsteel.com/Skynet/comments/commentRss/260234.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/260234.html
#!/bin/perl -w
use Time::Local;

my $log_input_file="~/log";
sub set_log_input_file{
  
$log_input_file=$_[0];
}


#&perl_log("tt","/home/xj_liukaiyi/log");
sub perl_log{
  
my $log_msg=shift @_;
  
print $log_msg,"\n";
  
system 'ttmp1=$(date +%Y-%k-%d);ttmp2=$(date +%M:%S);echo "$ttmp1 $ttmp2:'."$log_msg".'" >>'.$log_input_file;
}

#&system_util("xls -l","~/log");
sub system_util{
  
my $comm=shift @_;
  
my @return=system $comm;
  
if ( $return[(@return-1)] == 0 ) { 
     
&perl_log("[success]".$comm,$log_input_file);
  }
else{
     
&perl_log("[error]".$comm,$log_input_file);
  }
  
return $return[(@return-1)];
}

1;

excel è¯Õd–util 
require("/home/xj_liukaiyi/src/perl/excel/excelUtil.pl");&parse_excel("2w.xls","歌曲列表","&read_wlh);
#!/bin/perl -w
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtUnicode; 
use Encode;
use Unicode::Map();
my $Map = new Unicode::Map("GB2312");


my $excelCODE='gb2312';
my $coslCODE='utf8';

my %parseCache ;
my %writeCache ;

my $oFmtJ = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map =>$excelCODE); 
my $oExcel = new Spreadsheet::ParseExcel;



#
#&parse_excel("all4.xls","乐扑","&read_lp); 
# sub read_lp{  $_[1 .. 2.3  ] }
sub parse_excel{
 
my $sExcelName=shift;
 
my $sSheetName=shift;
 
my $action_fun=shift;
 
 
my($iR, $iC, $oWkS,$oWkC);
 
#开�nbsp;excel
 my $oBook = $oExcel->Parse($sExcelName,$oFmtJ);
 
#æ ÒŽ® sheet åç§°åŒšw… 
 for(my $iSheet=0$iSheet < $oBook->{SheetCount} ; $iSheet++){
    
my $t_oWkS = $oBook->{Worksheet}[$iSheet];
    
my $sWkSName=encode($coslCODE,decode($excelCODE,$t_oWkS->{Name} ));
    
if($sWkSName=~/$sSheetName/){
      
$oWkS=$t_oWkS;
      
last;
   }
 }


 
for(my $iR = $oWkS->{MinRow} ;
     
defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ;
     
$iR++){
     
my @arr_row;
     
for(my $iC = $oWkS->{MinCol} ;
         
defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ;
         
$iC++){
       
$oWkC=$oWkS->{Cells}[$iR][$iC];
       
my $col_value="";
           
$col_value=encode($coslCODE,decode($excelCODE,$oWkC->Value) ) if ($oWkC) ;
           
push(@arr_row,$col_value);
         }
      
push(@arr_row,$iR);
     
$action_fun->(@arr_row);
    }
}

#使用 demo
find . -maxdepth 1 -name "*xls" -exec perl -'
require("/home/xj_liukaiyi/src/perl/excel/excelUtil.pl");
my $file=$ARGV[0];
sub myRead{
  my $str="";
  foreach$tmp(@_){
    $str+"$tmp\t";
  }
  system "echo $str >> $file.data";
}
&parse_excel("$file",0,\&myRead);
print "$file\n";
' {} \;





]]>
perl 工具ž®è„šæœ?/title><link>http://www.aygfsteel.com/Skynet/archive/2009/03/02/257374.html</link><dc:creator>刘凯æ¯?/dc:creator><author>刘凯æ¯?/author><pubDate>Mon, 02 Mar 2009 09:51:00 GMT</pubDate><guid>http://www.aygfsteel.com/Skynet/archive/2009/03/02/257374.html</guid><wfw:comment>http://www.aygfsteel.com/Skynet/comments/257374.html</wfw:comment><comments>http://www.aygfsteel.com/Skynet/archive/2009/03/02/257374.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Skynet/comments/commentRss/257374.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Skynet/services/trackbacks/257374.html</trackback:ping><description><![CDATA[<br /> <br /> 工具ž®è„šæœ?br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008000;">#</span><span style="color: #008000;">!/bin/perl</span><span style="color: #008000;"><br /> </span><span style="color: #0000ff;">use</span><span style="color: #000000;"> File</span><span style="color: #000000;">::</span><span style="color: #000000;">Find;<br /> </span><span style="color: #0000ff;">use</span><span style="color: #000000;"> </span><span style="color: #0000ff;">Log</span><span style="color: #000000;">::</span><span style="color: #000000;">FileSimple;<br /> <br /> </span><span style="color: #008000;">#</span><span style="color: #008000;">use strict;<br /> #use warnings;<br /> <br /> # è¯´æ˜Ž: <br /> #     éåކå‡?nbsp;"/cygdrive/c/Documents and Settings/Administrator/"  <br /> #       æ»¡èƒö "^.*\.txt$" æ·ÕdŠ æ–‡äšg<br /> #         òq¶è¿è¡?nbsp;"ls -l $fileAllName " <br /> #    ˜qè¡Œæ—¥å¿— ./log<br /> #<br /> # perl this.pl  <br /> #     "ls -l $fileAllName " <br /> #     "/cygdrive/c/Documents and Settings/Administrator/"  <br /> #     "^.*\.txt$"<br /> #     ./log<br /> #<br /> # run_comm å‚æ•°1 æ›¿æ¢è¯´æ˜ŽåQ?br /> #     $filePath  ä¸ø™¾“入参æ•?åQŒéåŽ†æ ¹ç›®å½• "/cygdrive/c/Documents and Settings/Administrator/"  <br /> #    $fileAllName ä¸ºå½“前遍历,满èƒö正则条äšgçš?nbsp;å…¨èµ\å¾?æ–‡äšgå?br /> #    $logicFileAllName  ä¸ºå½“前遍历,满èƒö正则条äšgçš?nbsp;逻辑路径+æ–‡äšgå?br /> #    $logicFilePath ä¸ºå½“前遍历,逻辑路径<br /> #    $logicFileName æ–‡äšg名称<br /> #    $logicFileExp  æ–‡äšg后缀  <br /> #        åQˆtest.txt æ–‡äšg  <br /> #            $logicFileName ä¸?nbsp;test <br /> #            $logicFileExp ä¸?nbsp;txt<br /> #            åQ?/span><span style="color: #008000;"><br /> </span><span style="color: #000000;"><br /> </span><span style="color: #0000ff;">my</span><span style="color: #000000;"> </span><span style="color: #800080;">$run_comm</span><span style="color: #000000;">=</span><span style="color: #800080;">$ARGV</span><span style="color: #000000;">[</span><span style="color: #800000;">0</span><span style="color: #000000;">];<br /> </span><span style="color: #0000ff;">my</span><span style="color: #000000;"> </span><span style="color: #800080;">$file_path</span><span style="color: #000000;">=</span><span style="color: #800080;">$ARGV</span><span style="color: #000000;">[</span><span style="color: #800000;">1</span><span style="color: #000000;">];<br /> </span><span style="color: #0000ff;">my</span><span style="color: #000000;"> </span><span style="color: #800080;">$file_find_rex</span><span style="color: #000000;">=</span><span style="color: #800080;">$ARGV</span><span style="color: #000000;">[</span><span style="color: #800000;">2</span><span style="color: #000000;">];<br /> </span><span style="color: #0000ff;">my</span><span style="color: #000000;"> </span><span style="color: #800080;">$logfile</span><span style="color: #000000;">=</span><span style="color: #800080;">$ARGV</span><span style="color: #000000;">[</span><span style="color: #800000;">3</span><span style="color: #000000;">];<br /> <br /> <br /> </span><span style="color: #0000ff;">my</span><span style="color: #000000;"> </span><span style="color: #800080;">$log</span><span style="color: #000000;"> </span><span style="color: #000000;">=</span><span style="color: #000000;"> new </span><span style="color: #0000ff;">Log</span><span style="color: #000000;">::</span><span style="color: #000000;">FileSimple(name</span><span style="color: #000000;">=></span><span style="color: #000000;"> </span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000; font-weight: bold;">Log::FileSimple logs</span><span style="color: #000000; font-weight: bold;">'</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />                               file      </span><span style="color: #000000;">=></span><span style="color: #000000;"> </span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">$logfile</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />                               mask      </span><span style="color: #000000;">=></span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #800000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />                               autoflush </span><span style="color: #000000;">=></span><span style="color: #000000;"> </span><span style="color: #800000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />                               );<br /> <br /> </span><span style="color: #0000ff;">sub</span><span style="color: #000000;"> fileThumb{<br />  </span><span style="color: #0000ff;">eval</span><span style="color: #000000;">{<br />   </span><span style="color: #800080;">$_tmp_run_comm</span><span style="color: #000000;">=</span><span style="color: #800080;">$run_comm</span><span style="color: #000000;"> ;<br />   </span><span style="color: #0000ff;">if</span><span style="color: #000000;">( </span><span style="color: #000000;">/</span><span style="color: #800080;">$file_find_rex</span><span style="color: #000000;">/</span><span style="color: #000000;"> ){<br />     </span><span style="color: #800080;">$fileNum</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />     </span><span style="color: #800080;">$_tmp_run_comm</span><span style="color: #000000;">=~</span><span style="color: #000000;">s</span><span style="color: #000000;">/\</span><span style="color: #800080;">$filePath</span><span style="color: #000000;">/</span><span style="color: #800080;">$file_path</span><span style="color: #000000;">/</span><span style="color: #000000;">g;<br />     <br />     </span><span style="color: #0000ff;">my</span><span style="color: #000000;"> </span><span style="color: #800080;">$_file_all_name</span><span style="color: #000000;">=</span><span style="color: #800080;">$File</span><span style="color: #000000;">::</span><span style="color: #000000;">Find</span><span style="color: #000000;">::</span><span style="color: #000000;">name;<br />     </span><span style="color: #800080;">$_tmp_run_comm</span><span style="color: #000000;">=~</span><span style="color: #000000;">s</span><span style="color: #000000;">/\</span><span style="color: #800080;">$fileAllName</span><span style="color: #000000;">/</span><span style="color: #800080;">$_file_all_name</span><span style="color: #000000;">/</span><span style="color: #000000;">g;<br />     </span><span style="color: #0000ff;">my</span><span style="color: #000000;"> </span><span style="color: #800080;">$_logic_file_all_name</span><span style="color: #000000;">=</span><span style="color: #800080;">$_file_all_name</span><span style="color: #000000;">;<br />           </span><span style="color: #800080;">$_logic_file_all_name</span><span style="color: #000000;">=~</span><span style="color: #000000;">s</span><span style="color: #000000;">/</span><span style="color: #800080;">$file_path</span><span style="color: #000000;">//</span><span style="color: #000000;">g;<br />         </span><span style="color: #800080;">$_logic_file_all_name</span><span style="color: #000000;">=~</span><span style="color: #000000;">s</span><span style="color: #000000;">/^\</span><span style="color: #000000;">s</span><span style="color: #000000;">*\.//</span><span style="color: #000000;">g;<br />     </span><span style="color: #800080;">$_tmp_run_comm</span><span style="color: #000000;">=~</span><span style="color: #000000;">s</span><span style="color: #000000;">/\</span><span style="color: #800080;">$logicFileAllName</span><span style="color: #000000;">/\.\/</span><span style="color: #800080;">$_logic_file_all_name</span><span style="color: #000000;">/</span><span style="color: #000000;">g;<br />     </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #800080;">$_logic_file_all_name</span><span style="color: #000000;">=~/^</span><span style="color: #000000;">(</span><span style="color: #000000;">.*</span><span style="color: #000000;">)</span><span style="color: #000000;">\/</span><span style="color: #000000;">([</span><span style="color: #000000;">^\/</span><span style="color: #000000;">]</span><span style="color: #000000;">*</span><span style="color: #000000;">)</span><span style="color: #000000;">\.</span><span style="color: #000000;">([</span><span style="color: #000000;">^\.</span><span style="color: #000000;">]</span><span style="color: #000000;">*</span><span style="color: #000000;">)$</span><span style="color: #000000;">/</span><span style="color: #000000;">){<br />       </span><span style="color: #0000ff;">my</span><span style="color: #000000;"> </span><span style="color: #800080;">$_logic_file_path</span><span style="color: #000000;">=</span><span style="color: #000000;">$</span><span style="color: #800000;">1</span><span style="color: #000000;">;<br />       </span><span style="color: #0000ff;">my</span><span style="color: #000000;"> </span><span style="color: #800080;">$_logic_file_name</span><span style="color: #000000;">=</span><span style="color: #000000;">$</span><span style="color: #800000;">2</span><span style="color: #000000;">;<br />       </span><span style="color: #0000ff;">my</span><span style="color: #000000;"> </span><span style="color: #800080;">$_logic_file_exp</span><span style="color: #000000;">=</span><span style="color: #000000;">$</span><span style="color: #800000;">3</span><span style="color: #000000;">;<br />       </span><span style="color: #800080;">$_tmp_run_comm</span><span style="color: #000000;">=~</span><span style="color: #000000;">s</span><span style="color: #000000;">/\</span><span style="color: #800080;">$logicFilePath</span><span style="color: #000000;">/\.\/</span><span style="color: #800080;">$_logic_file_path</span><span style="color: #000000;">/</span><span style="color: #000000;">g;<br />       </span><span style="color: #800080;">$_tmp_run_comm</span><span style="color: #000000;">=~</span><span style="color: #000000;">s</span><span style="color: #000000;">/\</span><span style="color: #800080;">$logicFileName</span><span style="color: #000000;">/</span><span style="color: #800080;">$_logic_file_name</span><span style="color: #000000;">/</span><span style="color: #000000;">g;<br />       </span><span style="color: #800080;">$_tmp_run_comm</span><span style="color: #000000;">=~</span><span style="color: #000000;">s</span><span style="color: #000000;">/\</span><span style="color: #800080;">$logicFileExp</span><span style="color: #000000;">/</span><span style="color: #800080;">$_logic_file_exp</span><span style="color: #000000;">/</span><span style="color: #000000;">g;<br />       }<br />     </span><span style="color: #008000;">#</span><span style="color: #008000;">print $_tmp_run_comm,"\n";</span><span style="color: #008000;"><br /> </span><span style="color: #000000;">    </span><span style="color: #0000ff;">my</span><span style="color: #000000;"> </span><span style="color: #800080;">@return</span><span style="color: #000000;">=</span><span style="color: #0000ff;">eval</span><span style="color: #000000;">{</span><span style="color: #0000ff;">system</span><span style="color: #000000;">(</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">$_tmp_run_comm 2>&1 \|echo \$\? </span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">)};</span><span style="color: #000000;"><br />     </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( </span><span style="color: #800080;">$return</span><span style="color: #000000;">[(</span><span style="color: #800080;">@return</span><span style="color: #000000;">-</span><span style="color: #800000;">1</span><span style="color: #000000;">)] </span><span style="color: #000000;">!=</span><span style="color: #000000;"> </span><span style="color: #800000;">0</span><span style="color: #000000;"> ) { <br />       </span><span style="color: #800080;">$log</span><span style="color: #000000;">-></span><span style="color: #0000ff;">log</span><span style="color: #000000;">(message</span><span style="color: #000000;">=></span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">success($fileNum):$_file_all_name</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);<br />        }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br />       </span><span style="color: #800080;">$log</span><span style="color: #000000;">-></span><span style="color: #0000ff;">log</span><span style="color: #000000;">(message</span><span style="color: #000000;">=></span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">error($fileNum):$_file_all_name</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000;">);<br />         }<br />   }<br />  }<br /> }<br /> <br /> <br /> find(</span><span style="color: #000000;">\&</span><span style="color: #000000;">fileThumb</span><span style="color: #000000;">,</span><span style="color: #800080;">$file_path</span><span style="color: #000000;">);<br /> </span></div> <br /> <img src ="http://www.aygfsteel.com/Skynet/aggbug/257374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Skynet/" target="_blank">刘凯æ¯?/a> 2009-03-02 17:51 <a href="http://www.aygfsteel.com/Skynet/archive/2009/03/02/257374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> soap (java,perl,要写代码 ˜q˜ä¸˜q?100 char) http://www.aygfsteel.com/Skynet/archive/2009/03/02/257264.html刘凯æ¯?/dc:creator>刘凯æ¯?/author>Sun, 01 Mar 2009 16:00:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/03/02/257264.htmlhttp://www.aygfsteel.com/Skynet/comments/257264.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/03/02/257264.html#Feedback0http://www.aygfsteel.com/Skynet/comments/commentRss/257264.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/257264.html 可能最½Ž€å•çš„ soap 哦!
æœåŠ¡å™¨äØ“ java tomcat
下蝲服务器:http://www.apache.org/dist/ws/
   axis/ 为java
   axis-c/    ä¸?c

1.我这下蝲çš?axis 1_4 版本 åQŒè§£åŽ?/webapps/axis  攑ֈ° tomcat çš„webapps
启动tomcatåQˆè¿™ž®×ƒ¸ä¿®æ”¹ä»ÖM½•åQŒå¦‚有需è¦?è¯?web.xml ½{‰é…¾|®äº†åQ?a style="font-size: 12px;" onclick="NEBlog.gPrevBlog.oBlogList._oUpdownMenu.openBlog('blog/static/307422712007552499407', event);return false;"> 参è€?>>
    blog ä¸?˜q˜æœ‰å¾ˆå¤šä»‹ç» axis 大家可以 看看  日志 > 其下çš?"学习"

直接写个文äšg HelloWorld.jws 攑ֈ° %TOMCAT_HOME%"webapps"axis
public class HelloWorld {   
     
public String sayHello()   {   
     
return "HELLO soap!";    
 }    


½{‰ä¸å?可以使用 看看
http://127.0.0.1:8080/axis/HelloWorld.jws?method=sayHello
¾l“æžœ åQ?br />
<soapenv:Envelope>
<soapenv:Body>
<sayHelloResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<sayHelloReturn xsi:type="xsd:string">HELLO soap!</sayHelloReturn>
</sayHelloResponse>
</soapenv:Body>
</soapenv:Envelope>


客户ŒD?br /> perl cpan >> install  SOAP::Lite
#!perl -w
use SOAP::Lite;
print SOAP::Lite
    
-> proxy('http://127.0.0.1:8080/axis/HelloWorld.jws')
    
-> uri('http://127.0.0.1:8080/axis/HelloWorld.jws')
    
-> sayHello()
    
-> result;
¾l“æžœåQ?HELLO soapåQ?/span>






]]>
Memcached 对话 Google ProtocolBuffers (perl)http://www.aygfsteel.com/Skynet/archive/2009/02/26/256804.html刘凯�/dc:creator>刘凯�/author>Thu, 26 Feb 2009 05:45:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/02/26/256804.htmlhttp://www.aygfsteel.com/Skynet/comments/256804.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/02/26/256804.html#Feedback0http://www.aygfsteel.com/Skynet/comments/commentRss/256804.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/256804.html
  看看我这å¼?web  ¾pȝ»Ÿæž¶æž„图,那就知道 使用¾lŸä¸€å­˜å‚¨æ ¼å¼çš„好处了ã€?br />   在这¿Uç»“构中你就单纯使用 java åQŒæˆ– php 某一¿Uå•一语言描述格式åQŒå­˜å‚¨ä½ é›†ç¾¤äº¤äº’的数据吗åQï¼Ÿä½¿ç”¨ProtocolBuffers 吧,Google 已经æœ?现成的api来帮你扩展了ã€?/strong>

参考:
http://blog.csdn.net/lcj8/archive/2009/02/17/3900157.aspx




     ä½œäØ“ Memcached ž®±æ˜¯ä¸ºé›†¾Ÿ¤ä‹Éç”¨ï¼Œé‚£ä¹ˆä½œäØ“åœ¨ç¼“å­˜å­˜å‚¨çš„æ•°æ®æˆ‘æƒ³ä¹Ÿåº”è¯¥é€‚ç”¨ä¸Žå„¿UçŽ¯å¢ƒï¼Œ˜q™æ—¶å€?数据¾l“构协议 Google ProtocolBuffers
参考:http://code.google.com/apis/protocolbuffers/docs/overview.html
其他语言åQ?/strong>http://code.google.com/p/protobuf/wiki/OtherLanguages
åQˆå¯é€‚用与多¿Uè¯­­a€åQ?br />     javascript è¯Õd–¾~“存中的数据 ,你可以想象下你的 web服务开å?的将来!åQ?br />


目前学习perl ä¸?ž®±å…ˆä¸Šä¸ª˜q™çš„代码åQ?br /> 参考:
http://search.cpan.org/~gariev/Google-ProtocolBuffers-0.08/lib/Google/ProtocolBuffers.pm#___top
#!/bin/perl -w
use Cache::Memcached;
use Google::ProtocolBuffers;
#开�memd
my $memd = new Cache::Memcached{servers => ['10.0.2.15:11211'] };

#声明 ¾~“å­˜ 存储 protocol 格式
my $key='test';
Google
::ProtocolBuffers->parse("
  message Person{
    required int32 id           =1;
    required string name        =2;
  }
",{create_accessors=>1});

my $data=Person->encode({
  id
=>123,
  name
=>'liukaiyi'
});

#¾~“存存储
$memd->add($key =>$data,3600);

#######################################################################


my $memd = new Cache::Memcached{servers => ['10.0.2.15:11211'] };
my $person;{
  #从缓存中取出
  
$person = Person->decode($memd->get($key));
}

print $person->id,"-",$person->name;

 


¾l“æžœåQ?br />   123-liukaiyi




]]>
memcached 使用åQˆperlåQ?/title><link>http://www.aygfsteel.com/Skynet/archive/2009/02/25/256642.html</link><dc:creator>刘凯æ¯?/dc:creator><author>刘凯æ¯?/author><pubDate>Wed, 25 Feb 2009 08:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/Skynet/archive/2009/02/25/256642.html</guid><wfw:comment>http://www.aygfsteel.com/Skynet/comments/256642.html</wfw:comment><comments>http://www.aygfsteel.com/Skynet/archive/2009/02/25/256642.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Skynet/comments/commentRss/256642.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Skynet/services/trackbacks/256642.html</trackback:ping><description><![CDATA[  <br />   ˜q™å¤§ä½“上可以看出åQŒæœåŠ¡å™¨ç«¯å£¾~“存技术ã€?br /> <br />   memcached 官方åQšhttp://www.danga.com/memcached/<br />   安装前,先安è£?<a >libevent</a><br />   其上ä¸?linux 软äšg一般安装,看他们readme文档 <br />   $>memcached -d -u nobody -m 512 127.0.0.1 -p 11211<br />   <br />   如果有异常,<br />   <strong><span style="color: rgb(53, 24, 255);">ln -s /usr/local/lib/libevent-1.4.so.2 /lib/libevent-1.4.so.2<br />   参è€?nbsp; </span></strong>http://blog.chinaunix.net/u2/70049/showart_1665279.html<br /> <strong><span style="color: rgb(53, 24, 255);">  </span></strong>我这ž®×ƒ‹Éç”?<strong>perl</strong> 语言了,<br />    其他语言参è€?http://code.google.com/p/memcached/wiki/Clients<br /> <br />    perl 使用 cpan> install <span style="color: rgb(0, 0, 0);">Cache</span><span style="color: rgb(0, 0, 0);">::</span><span style="color: rgb(0, 0, 0);">Memcached ;<strong>#会ä‹Éç”?perl 我就不说äº?/strong></span><br /> 代码说明åQšä¸åœå¯¹ key 为test çš„å€ÆD¿›è¡Œé€’增   <br /> <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: rgb(0, 128, 0);">#</span><span style="color: rgb(0, 128, 0);">!/bin/perl -w</span><span style="color: rgb(0, 128, 0);"><br /> </span><span style="color: rgb(0, 0, 255);">use</span><span style="color: rgb(0, 0, 0);"> Cache</span><span style="color: rgb(0, 0, 0);">::</span><span style="color: rgb(0, 0, 0);">Memcached;<br /> <br /> </span><span style="color: rgb(0, 0, 255);">my</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(128, 0, 128);">$memd</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> new Cache</span><span style="color: rgb(0, 0, 0);">::</span><span style="color: rgb(0, 0, 0);">Memcached{servers </span><span style="color: rgb(0, 0, 0);">=></span><span style="color: rgb(0, 0, 0);"> [</span><span style="color: rgb(0, 0, 0); font-weight: bold;">'</span><span style="color: rgb(0, 0, 0); font-weight: bold;">127.0.0.1:11211</span><span style="color: rgb(0, 0, 0); font-weight: bold;">'</span><span style="color: rgb(0, 0, 0);">] };<br /> </span><span style="color: rgb(0, 0, 255);">my</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(128, 0, 128);">$key</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0); font-weight: bold;">'</span><span style="color: rgb(0, 0, 0); font-weight: bold;">test</span><span style="color: rgb(0, 0, 0); font-weight: bold;">'</span><span style="color: rgb(0, 0, 0);">;<br /> </span><span style="color: rgb(128, 0, 128);">$memd</span><span style="color: rgb(0, 0, 0);">-></span><span style="color: rgb(0, 0, 0);">add(</span><span style="color: rgb(128, 0, 128);">$key</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">=></span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(128, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(128, 0, 0);">3600</span><span style="color: rgb(0, 0, 0);">) or </span><span style="color: rgb(0, 0, 255);">warn</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0); font-weight: bold;">'</span><span style="color: rgb(0, 0, 0); font-weight: bold;">Alread added</span><span style="color: rgb(0, 0, 0); font-weight: bold;">'</span><span style="color: rgb(0, 0, 0);">;<br /> </span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(128, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">){<br />   </span><span style="color: rgb(0, 0, 255);">print</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(128, 0, 128);">$memd</span><span style="color: rgb(0, 0, 0);">-></span><span style="color: rgb(0, 0, 0);">get(</span><span style="color: rgb(128, 0, 128);">$key</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 0); font-weight: bold;">"</span><span style="color: rgb(0, 0, 0); font-weight: bold;">\n</span><span style="color: rgb(0, 0, 0); font-weight: bold;">"</span><span style="color: rgb(0, 0, 0);">;<br />   </span><span style="color: rgb(128, 0, 128);">$memd</span><span style="color: rgb(0, 0, 0);">-></span><span style="color: rgb(0, 0, 0);">incr(</span><span style="color: rgb(128, 0, 128);">$key</span><span style="color: rgb(0, 0, 0);">) or </span><span style="color: rgb(0, 0, 255);">warn</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0); font-weight: bold;">'</span><span style="color: rgb(0, 0, 0); font-weight: bold;">FAIL!</span><span style="color: rgb(0, 0, 0); font-weight: bold;">'</span><span style="color: rgb(0, 0, 0);">;<br /> }</span><span style="color: rgb(0, 0, 0);"><br /> </span></div> <strong></strong> <br /> 使用 telnet 127.0.0.1 11211<br />      $> get  test <br />      VALUE test 0 2<br />      <strong><span style="color: rgb(248, 0, 0);">97</span></strong> <strong>#˜q™å°±æ˜¯æˆ‘们递增的å€?当然你ä‹É用什么语­a€å–都是一æ ïLš„ <br /> </strong>     END <br /> <br /> <img src ="http://www.aygfsteel.com/Skynet/aggbug/256642.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Skynet/" target="_blank">刘凯æ¯?/a> 2009-02-25 16:23 <a href="http://www.aygfsteel.com/Skynet/archive/2009/02/25/256642.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>perl file find http://www.aygfsteel.com/Skynet/archive/2009/02/23/256367.html刘凯æ¯?/dc:creator>刘凯æ¯?/author>Mon, 23 Feb 2009 15:55:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/02/23/256367.htmlhttp://www.aygfsteel.com/Skynet/comments/256367.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/02/23/256367.html#Feedback0http://www.aygfsteel.com/Skynet/comments/commentRss/256367.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/256367.htmluse File::Find;
use Time::Piece;


$timeOneDay = 86400;
$dayMultipler = 1;

$ByteCount = 0;
$fileAll = 0;
$fileJpg = 0;
$fileYes = 0;
$pathToTra = ".";

$gt = localtime;
$t1 = $gt->epoch;
find(
\&fileThumb, $pathToTra);
$gt = localtime;
$t2 = $gt->epoch;

print "Total KByte: ".($ByteCount/1024)."\n";
print "Total Scan:  ".$fileAll."\n";
print "Total Jpeg:  ".$fileJpg."\n";
print "Total Match: ".$fileYes."\n";
print "Total TimeCost: ".($t2-$t1)."\n";

sub fileThumb
{
   
$fileAll++;
   
if ((/.*\.jpg$/) )
   {   
      
$fileJpg++;
      
my $lt = 0;
      
$lt = localtime;

      
my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks= stat($_)  or die "Unable to stat $_\n";           
      
if ( $mtime < ($lt->epoch - $timeOneDay*$dayMultipler) )
      {
         
print "[ $fileYes ]"."$File::Find::name";
         
print $size." ".$ctime." ".$lt->epoch."\n";
         
$ByteCount += $size;
         
$fileYes++;
      }
   }
}



 



]]>
log4j perl 错误日志提取http://www.aygfsteel.com/Skynet/archive/2009/02/19/255445.html刘凯�/dc:creator>刘凯�/author>Thu, 19 Feb 2009 05:01:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/02/19/255445.htmlhttp://www.aygfsteel.com/Skynet/comments/255445.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/02/19/255445.html#Feedback0http://www.aygfsteel.com/Skynet/comments/commentRss/255445.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/255445.html 日志
#!/bin/perl
use Encode ;
open(NOTESFILES,$ARGV[0]);

my %errorMeganotes;

print ">>>>>>>>>>>>>>",$ARGV[0],"<<<<<<<<<<\n";

while (<NOTESFILES>) {
  
if$_=~/^(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\s+ERROR\s+(.*)\s/g ){
     
if($errorMeganotes{$2}){
       
push @{$errorMeganotes{$2}},$1;
     }
else{
       
$errorMeganotes{$2}=[$1];
     }
  }
}

for(keys %errorMeganotes){
  
my $tmp_keys=$_;
  
my @tmp_array= @{$errorMeganotes{$tmp_keys}};
  
print "error number :>>",scalar(@tmp_array),"<<\n",encode("GBK",decode("UTF-8",$tmp_keys)),"\n",join(",\t",@tmp_array),"\n\n\n";
}


sh
#!/bin/sh
nowDate=$(date -'-1 day' +%Y-%m-%d);
echo $nowDate

perl 
/data/apps/shell/meganotesErrorLog.pl /data/apps/meganotes/tomcat/logs/app/app.log.$nowDate >  _tmp_$nowDate ;
perl 
/data/apps/shell/meganotesErrorLog.pl /data/apps/schedule/tomcat/logs/app/app.log.$nowDate  >> _tmp_$nowDate ;


mail 
-s $nowDate-ERROR-log  my@mail.com  <  _tmp_$nowDate;
rm _tmp_$nowDate ;

¾l“æžœåQ?br /> >>>>>>>/data/apps/meganotes/tomcat/logs/app/app.log.2009-02-18<<<<<<<<<
error number :>>2<<
MusicActionOpLogProxy:142 - music.popularTime=[Invalid field value for field "music.popularTime".]
2009-02-18 15:53:54,    2009-02-18 16:00:12
。。。。。�br />




]]>
使用 awk 一æ ?使用 perl òq?她可çˆÞqš„æ­£åˆ™ http://www.aygfsteel.com/Skynet/archive/2009/02/17/255158.html刘凯æ¯?/dc:creator>刘凯æ¯?/author>Tue, 17 Feb 2009 09:39:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/02/17/255158.htmlhttp://www.aygfsteel.com/Skynet/comments/255158.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/02/17/255158.html#Feedback0http://www.aygfsteel.com/Skynet/comments/commentRss/255158.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/255158.html 参考:
  http://my.huhoo.net/archives/2007/08/perl_1.html

½Ž€å•çš„
   echo "tt" |perl  -ne  'print $_ '
多行
   find . -type f |perl  -ne  'print $1 $_ if $_=~ /(.*)flv/'
限定行数
   find . -type f |perl  -ne  'print $_ if $_=~ /.*flv/ && $tmp++<10 && $tmp>4'
    #当然shell>> find . -type f |grep ".*flv" |sed -n '5,10p' 和上面是一æ ïLš„
    # 不过 你看é‚?nbsp; 其中使用 $1 ½{‰æ­£åˆ™é‡å®šå‘ ,哈哈
¾l“果大体ä¸?
./test3/0.flv
./flvplayer.swf
./test.flv
./0.flv




perl -h
  -e program        one line of program (several -e's allowed, omit programfile)
  -n                assume "while (<>) { ... }" loop around program
  -p                assume loop like -n but print line also, like sed






]]>
perl log4j 分析日志http://www.aygfsteel.com/Skynet/archive/2009/02/17/255116.html刘凯�/dc:creator>刘凯�/author>Tue, 17 Feb 2009 07:50:00 GMThttp://www.aygfsteel.com/Skynet/archive/2009/02/17/255116.htmlhttp://www.aygfsteel.com/Skynet/comments/255116.htmlhttp://www.aygfsteel.com/Skynet/archive/2009/02/17/255116.html#Feedback0http://www.aygfsteel.com/Skynet/comments/commentRss/255116.htmlhttp://www.aygfsteel.com/Skynet/services/trackbacks/255116.html
普通的 log4j 日志 åQ?br /> 当然 ç‰ÒŽ®Šè¦æ±‚ ç‰ÒŽ®Šå¤„理 ã€?br />
#!/bin/perl
open(FILES,"/data/apps/schedule/tomcat/logs/app/app.log.2009-02-17");
while (<FILES>) {
    
next if !/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\s+ERROR\s+/;
    
if($_=~/(.*-){3}(.*?):(.*)$/g){
        
$error{$2}++ ;
    }
elsif($_=~/(.*-){3}(.*)/g ){
        
$error{$2}++ ;
    } 
    。。。。ã€?br />     }   
print "$_: $error{$_}\n" for(keys %error);

 java.net.SocketTimeoutException: 4
 test1 illegal!: 4
 cd illegal!: 4
 test2 illegal!: 4
 MusicAlbum not exists: 5
 Not Found Any File: 14
 java.net.ConnectException: 3
 Album not exists: 2
 ã€‚。ã€?br />



]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ¶õÂ×´º×ÔÖÎÆì| ÁúÄÏÏØ| ÎÚÀ¼ÏØ| ºìÇÅÇø| ¿ªÔ¶ÊÐ| ¹ãÈÄÏØ| ±±³½Çø| ÕýÀ¶Æì| Í­É½ÏØ| ÄêϽ£ºÊÐÏ½Çø| ÑïÖÐÊÐ| Üþ¾­ÏØ| ׯÀËÏØ| ÊæÀ¼ÊÐ| ¼ÎÒñÏØ| Ì©ÄþÏØ| ÀûÐÁÏØ| Í©³ÇÊÐ| ·îÐÂÏØ| ¹óϪÊÐ| ÎÚÉóÆì| °ÍÂí| ̨¶«ÏØ| »Ý¶«ÏØ| ÔÆºÍÏØ| ÓåÖÐÇø| µ±Í¿ÏØ| »ýʯɽ| ËçÑôÏØ| ¶«º£ÏØ| °×ÀÊÏØ| ÈýÃÅÏ¿ÊÐ| ÓÀ¼ÃÊÐ| Õê·áÏØ| ÄϽ§| ÄÇÆÂÏØ| ÒÁͨ| ÎäÇ¿ÏØ| ÐË»¯ÊÐ| ÄþµÂÊÐ| ÀÖ²ýÊÐ|