这两天学习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="[email protected] 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,将它们按照数字逆序排序

这两天学习perl,总结的一些东西!

时间: 2024-08-08 15:24:14

这两天学习perl,总结的一些东西!的相关文章

像学历史课本一样学习Perl

第一次接触Perl,还是2008年10月份的时候,当时因为项目重构,需要进行大量的文本操作,于是便拾起了以“文本操作为己任”的Perl语言.当然,带我入门的还是那本赫赫有名的The Llama  Book, 即<Learning Perl> 第四版. 然而,由于主要是为了使用,所以只是快餐式的学习,并没有系统的去了解Perl,这几年来三三两两的也写了不少Perl脚本,但是对于Perl那些天书式的符号,还是颇有些头疼,经常,写到一半就得停下来去查一下某个奇怪的语法,或者奇特的符号,很是打断思路.

关于学习Perl

Perl是一门很有用的语言,可以用它来做很多事.然而,它也仅是一门语言,掌握了Perl,你只是掌握了Computer领域的一小块知识.在学习Perl前,请明确你的学习目的,并采用正确的学习方法和资源. (一)学习目的 你学Perl的目的是什么?要实现你的目的,光有Perl够吗?让偶帮你分析看看. 1. 我想当一名System Administrator,并将Perl用于SA工作. 想法很好,优秀的SA,Perl能力必备.Perl自身的灵活语法,强大的正则表达式,良好的shell结合能力,以及CP

学习PHP到底要学习哪些东西?

很多学PHP的人一直也搞不清楚,一个PHP程序员和Java程序员或者是.net程序员有什么不同,告诉你,其实都一样,没有什么不同.下面的内容,就是针对一个Java程序员掌握的技能对比PHP来说的!告诉你,它们其实是一样的,不过是工具而已,没有高低贵贱之分.只不过你不熟练,不知道而已. 语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误,并且知道如何修正. 命令:必须熟悉PHP带的一些常用命令及其常用选项,熟悉那些命令,自己运行php.exe -

人的提升不是直线上升的,也不是一直弧线上升的(人之所以有文明就是因为不断的学习和积累好的东西)

正确的积累经验: 在实际工作中,要学习好的习惯,虽然你现在并不赞同,但是你要学习,并一直保持下去,因为人之所以有文明就是因为不断的学习和积累好的东西. 不要盲目赞同别人,要先思考,要有自己的立场. 不要高看自己,要虚心,要谦虚,要多听别人说,多学习别人的优秀的地方. 更快的提升能力: 不走弯路,就是最好的捷径. 过程: 人的提升不是直线上升的,也不是一直弧线上升的,而是像正弦波一样有高有低,慢慢提升. http://blog.csdn.net/songjinshi/article/details

今天学习了一些redis的东西

今天在虚拟机的Ubuntu上装了一个redis,学习redis的一些基本东西,在数据类型的时候,看到redis的,String,hash,set list zset,对String的setbit命令一头雾水,看不懂什么, SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit).看的很懵,今天先跳过去,等学完redis了,再回头学习这个.如果大家有什么好的建议,或者看法,请给我留言,让我尽快弄懂这个 SET key value 设置指定

入职第三周——总结前两周学习内容

入职第二周,我系统性的学习了mui框架以及angularjs,并且自己简单的写了一个登录页面.在做这个登录界面的时候,我接触到了html5+,这是hbulider自己写的接口,针对android原生api,在用html5写的时候可以调用html5+的接口,这样就可以使用android原生api,比如相机.录音或者通讯录等等. 入职第三周,我想通过项目来完善自己的技术,因为只是看看文档太无聊了,要真正动手做在实践中学习和成长才是正确的编程方式.所以我打算开发一个app,经过指导老师的建议,我准备开

简单总结在51cto平台的两日学习

许久未曾静下心写东西,希望这会是一个好习惯的开始. 一次偶然的机会,大概是160415在Applestore邂逅51cto,看了点评果断下载,着实是一款优秀的学习软件. 由于最近正在用python写自动化测试脚本,所以疯狂学习中, 由于还得上班,所以学习时间并不是很多,现已学习11h,有待继续坚持. 就不多说什么了,感谢一路走来的.敲碎内心的人和事, 感谢一直坚持着走的自己, 要感恩,更得记住: 单身狗的独木舟屹立不倒!

CMAKE 教程前两章节学习

原文 https://cmake.org/cmake-tutorial/ 以下是一个循序渐进的教程,它覆盖了CMAKE帮助改进的通常的构建系统的话题.许多话题在<掌握CMAKE>(<Mastering CMake>)已经作为单独话题介绍,但是在一个示例工程中运用它们会更有帮助于学习.教程可以再本项目开源代码Tests/Tutorial 目录下找到代码树.每一步操作都有包含完整代码的子目录. 第一步 基础起点 最基础的工程就是从代码中构建一个执行文件.对于简单工程来说,仅仅需要两行C

本两周学习总结

这两周主要再看源码,所以没什么好写的,但是绝大大多源码或者记录一些我觉得有意思的代码, 主要记录的有D3源码,date-fns,rx.js主要是需要后期看能不能看看源码,numjs,然后修改成两周更新一次,其他这样的更新其实也是保持新鲜感 this指向问题 function sumArgs() { return Array.prototype.reduce.call(arguments, (acc, val) => { return acc + val }, 0) } console.log(s