首页 > 代码库 > 这两天学习perl,总结的一些东西!
这两天学习perl,总结的一些东西!
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 | 我们老大给了我三本书,让我学习下perl,昨天看了一天,今天给整理了下,两天的成果展现,没有什么脚本的基础,之前也就是看过python一点点,没用过!<br>还有一些没有测试过,没什么时间了,还得再看看最重要的模式匹配----先上一部分。<br>想想perl毕竟是一门语言,没有实战,还是不行!所以继续努力哦。。。。<br><br><br><br><br><br><br> #! /usr/bin/perl # 一:在线帮助,运行简单perl脚本,模块的安装 ##1:在线帮助:http://search.cpan.org/ ##2:如何运行简单的perl呢? cd /桌面 gedit firstperl.pl 然后编辑输入: #! /usr/bin/perl ##这一行一定要加,perl编译器的地址 print "hello world" ; 然后退出gedit 在终端输入: chmod a+x firstperl.pl ./firstperl.pl 可以看到成功运行! ### =xxx 和 =cut 之间表示多行注释 #3:eclipse下安装perl插件:EPIC #打开eclipse->help->install new software->add->输入:http://e-p-i-c.sf.net/updates/testing #ok,开始安装下载,有时候安装不起来,一直在pending,,我遇到情况是家里能下,公司不能下,具体原因说不清楚!(看出我是菜鸟级别了!) #4:模块的安装: http://search.cpan.org/ 搜到模块然后下载至 /home/hqh/下载 cd ~/下载 tar zxvf URL-Signature-0.03.tar.gz cd cd URL-Signature-0.03/ perl Makefile.PL make make install # 二:perl数据类型与运算 #只说明几点注意的,具体问题具体分析咯 #1:整数,浮点数据都被perl当成双精度浮点数来处理 print 123243546; print "\n" ; print 123_243_546; print "\n" ; #123243546和123_243_546是等价的哦,人们一般经常看到的是用逗号隔开,但是逗号在perl有其他用法! #至于16进制,8进制的,一般不常用吧,具体问题具体分析咯! #2:perl的"布尔值",根据返回值来看 #数值:0代表false,其余都为true #字符:空字符代表false,其余为true #3:字符串,字符 print ‘huangqihao\n‘ ; print "huangqihao\n" ; print "huang" . "qihao\n" ; print ‘huang‘ . ‘qihao\n‘ ; print ‘huang‘ x 4; print "\n" ; print 5 x 4; print "\n" ; #说明三点:(1)单引号表示字符串,但换行符不被识别,最好就用双引号吧。(2)另外 x 读做 唉克思,用于重复字符串的运算符,x后面跟的是重复的次数! #(3) . 操作符用于连接字符串!! #4:运算符:主要注意下 ** 以及 \ print 2**3; print "\n" ; print 10%3; print "\n" ; print 10.1%3; print "\n" ; print 10.1%3.1; print "\n" ; #看出 无论是10.1还是3.1都要先转换成整数(我在这里会联想到之前说的:就是之前说perl里面整数和浮点数都当成双精度浮点数,我的理解是取余运算的时候会做trunc) #5:变量 $i =3; print "$i is equel to 3\n" ; #变量内插字符串 print "\$i is not equle to 3\n" ; # 变量不内插字符串,前面加一个 \ # 三:控制结构 #选择结构 $cin1 = "\n" ; if ( $cin1 eq "\n" ){ print "空屁,啥也没有!\n" ; } else { print $cin1 ; } $changeline = "please use chomp to change line \n" ; print $changeline ; $changeline1 = chomp ( $changeline ); #chomp有一个返回值,返回移除的个数 print $changeline1 ; print "\n" ; #undef相当于null,defined函数,识别是不是空字符串 $cin1 = "" ; if ( defined ( $cin1 )){ print "it is a string" ; } else { print "null" ; } #循环 $n =0; while ( $n <10){ $sum += $n ; $n +=2; print "$sum\n" ; } print "$sum\n" ; #! /usr/bin/perl # 四:数据结构 #数组,perl中的数组跟列表有很强的关联性,个人认为数组是从操作意义上的列表!(菜鸟不大懂,勿喷!) @data =( "a" , "b" , "c" ); print "$data[1]\n" ; print "@data\n" ; $data [1]= "yellow" ; print "@data\n" ; #以上是简单的对列表进行替换,注意符号,当处理数据中的指定某个元素时,用$符号!! $felements = $data [0]; print $felements ; $end = $#data ; print $end ; $numbers = $end +1; print $numbers ; $lelements = $data [ $#data ]; print $lelements ; #注意 $#符号取最后一个元素的下标!,所以实际长度为 $#data+1 @aa1 =(1..7); print @aa1 ; ( $a , $b , $c )=( ‘a‘ , ‘b‘ , ‘c‘ ); print $a , $b , $c ; #交换两个变量 ( $a , $b )=( $b , $a ); print $a , $b ; print "\n" ; #qw符号 ( $a , $b , $c )=qw !abc 123 434!; print "$a\n$b\n$c\n" ; ( $a , $b , $c )=qw .abc 123 434.; print "$a\n$b\n$c\n" ; ( $a , $b , $c )=qw :abc 123 434:; print "$a\n$b\n$c\n" ; #pop,push @www =( ‘ab‘ , ‘cd‘ , ‘ef‘ ); print pop ( @www ); push ( @www ,0); print @www ; #pop 和 push的第一个参数都为数组变量 #shift,unshift @www =( ‘ab‘ , ‘cd‘ , ‘ef‘ ); print shift ( @www ); unshift ( @www ,4); print @www ; #shift和 unshift的第一个参数都为数组变量 #数组插入字符串 $ii = "sjdfk@www sdjfkl" ; print $ii ; #reverse,sort @www =( ‘db‘ , ‘cd‘ , ‘ec‘ ); print reverse ( @www ); print sort ( @www ); print "\n" ; #foreach foreach $element ( @www ){ print "$element\n" ; } # 五:函数 ##没有参数 sub sum1{ print 1+9; } &sum1 ; sub sum2{ 3+5; } print 3* &sum2 ; foreach $s (1..9){ print $s *$s ; print "\n" ; } foreach (1..9){ print $_ ; print "\n" ; print $_ *$_ ; print "\n" ; } ###$_其实就是for里面的i #@_ 在某个函数内,数组 @_ 包含传递给该函数的所有参数。 #$_ 默认的输入/输出和格式匹配空间 # 六:文件操作 #读文件 open (FD, "/home/hqh/桌面/2.pl" )|| die ( "can not open the file" ); @aa =<FD>; print @aa ; foreach ( @aa ){ print "$_\n" ; } #写文件 open (HD, ">>/home/hqh/桌面/3.pl" )|| die ( "can not open the file" ); #HD为写入句柄 print HD "@aa" ; open (ND, "/home/hqh/桌面/3.pl" )|| die ( "cant not open the file" ); @bb =<ND>; print @bb ; #追加文件 open (ZJ, ">>/home/hqh/桌面/3.pl" )|| die ( "can not open the file" ); print ZJ "@aa" ; open (ZJ, "/home/hqh/桌面/3.pl" )|| die ( "can not open the file" ); @cc =<ZJ>; print @cc ; #! /usr/bin/perl # 七:hash #hash 形式,赋值等 %ha0 =(); $ha0 { "yellow" }= "great" ; print %ha0 ; %ha1 =( "a" ,12, "b" ,13, "c" ,17); print %ha1 ; print "\n" ; %ha2 =( "a" =>12, "b" =>13, "c" =>17); print %ha2 ; print "\n" ; #hash keys 和values each print keys %ha2 ; print "\n" ; print values %ha2 ; print "\n" ; #注意用while函数 while (( $key , $value )= each ( %ha2 )){ print "key is $key ; value is $value \n" ; } #delete,exists函数,内插函数 %hash4 =( "a1" ,111, "b" ,123, "c" ,234, "d" ,789); print %hash4 ; delete $hash4 { "a1" }; if ( exists ( $hash4 { "a1" })){ print "have!" ; } else { print "no have !!" ; } #内插 print "hash array is %hash4" ; # 八:控制结构 #unless 与 if(!condition)一个含义 #untile与while(!condition)一个含义 #elseif函数 #裸块 #表达式修饰符,一句话简单明了,后面加条件,看下面例子 %hash9 =( "a" =>3, "b" =>4, "c" =>6); print keys %hash9 unless ( values %hash9 ) %2==0; #for控制结构,和C++ 很像 $sum =0; for ( $i =0; $i <=10; $i ++){ $sum = $sum + $i ; } print $sum ; print "\n" ; #关注循环体中last,next,redo的操作!!! $sum1 =0; for ( $i =0; $i <=10; $i ++){ $sum1 = $sum1 + $i ; last if ( $i ==6); } print "sum1=$sum1\n" ; ##只加到5,遇到6,就跳出循环啦!! $sum2 =0; for ( $i =0; $i <=10; $i ++){ next if ( $i ==6); $sum2 = $sum2 + $i ; } print "sum2=$sum2\n" ; #######6木有加进去,其他都加进去了 $sum3 =0; for ( $i =0; $i <=10; $i ++){ print "hello,redo is here!\n" ; redo if ( $i ==6); $sum3 = $sum3 +1; } print "sum3=$sum3\n" ; ############一直在循环print hello.. #三元操作符,等于R语言中ifelse函数 $a =1+1>3 ? " larger" : " smaller" ; print $a ; # perl目录文件操作 # chdir "/home/hqh/桌面/perlperl" or die "cannot chdir to /etc: $!" ; @fileparameters = glob "*" ; print @fileparameters ; chdir "/home/hqh/桌面/perlperl/first perl" or die "cannot chdir to /etc: $!" ; @fileparameters = glob "*" ; print @fileparameters ; chdir "/home/hqh/桌面/perlperl" or die "cannot chdir to /etc: $!" ; #解析目录 opendir (HD , "/etc" ) || die "can not opendir! " ; @aa = readdir (HD); print @aa ; foreach $tt ( @aa ){ print "$tt\n" ; } closedir HD; #删除操作 unlink 与glob结合 #unlike glob "*.pm"; #重命名 rename #创建和删除目录 mkdir rmdir #修改权限 chmod #改变所有者 chown 1004 ,100,glob "*.pm" ,1004表示user的ID,调用 getpwnam 函数,将名字转换为数字,而对应的 getgrnam #将组名转换为数字 #index函数,查找子串在主串中的位置! #substr函数 #sprintf函数,返回请求的字符串,不被打印出来,用于赋值,比较豪! #$score{$b} <=> $score{$a}的意思是根据 score,将它们按照数字逆序排序 |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。