- Page 1: Perl 语 言 编 程
- Page 7 and 8: 12.4.1 可 继 承 构 造 器 ....
- Page 9 and 10: 17.2.3.2. 信 号 灯 .............
- Page 11 and 12: 不 管 你 喜 欢 把 Perl 称
- Page 13 and 14: 可 以 向 语 言 中 增 加 新
- Page 15 and 16: 数 组 和 散 列 也 互 不 相
- Page 17 and 18: 象 我 们 在 上 边 做 的 ,
- Page 19 and 20: $kids_of_wife{"Jacob"}{"Zilpah"}[1]
- Page 21 and 22: use Some::Cool::Module;然 后 你
- Page 23 and 24: 你 可 以 用 下 面 所 示 的
- Page 25 and 26: 来 。 在 这 些 系 统 中 ,
- Page 27 and 28: open(SESAME, "input-pipe-command |"
- Page 29 and 30: print $a . $b; # 打 印 123456同
- Page 31: 说 过 赋 值 类 似 一 个 过
- Page 35 and 36: 在 Perl 中 , 真 总 是 在 标
- Page 37 and 38: $available = 10000 - $tickets_sold;
- Page 39 and 40: 不 同 于 if 和 while 语 句 ,f
- Page 41 and 42: 个 数 据 域 之 间 定 界 的
- Page 43 and 44: 甚 至 “a!”, 但 不 匹 配
- Page 45 and 46: 同 理 , 也 有 表 示 字 符
- Page 47: @chicks 包 含 (Wilma, Betty), 而
- Page 50 and 51: 在 文 本 串 里 可 以 包 含
- Page 52 and 53: $x = $y;上 面 是 赋 值 操 作
- Page 54 and 55: 列 )。 相 比 之 下 , 词 法
- Page 56 and 57: 1。 首 先 ,Perl 预 先 在 最
- Page 58 and 59: 不 管 是 直 接 命 名 还 是
- Page 60 and 61: 表 2-1 反 斜 杠 的 字 符 逃
- Page 62 and 63: 除 了 被 代 换 的 数 组 和
- Page 64 and 65: 光 字 。) 和 文 件 句 柄
- Page 66 and 67: EOFprint
- Page 68 and 69: 这 些 就 是 所 谓 v- 字 串
- Page 70 and 71: my %xmy ($x)= funkshun(); # list co
- Page 72 and 73: 我 们 早 先 说 过 双 引 号
- Page 74 and 75: "gamma",);或 者 你 可 以 完
- Page 76 and 77: $x = ( () = funk() ); # 同 样 把
- Page 78 and 79: RANK => 'Captain',SERNO => '951413'
- Page 80 and 81: eturn *FH:# 不 是 \*FH!}$fh = new
- Page 82 and 83:
print while $_ = ;print while ;#
- Page 84 and 85:
大 文 件 一 样 。( 不 过
- Page 86 and 87:
文 件 团 只 有 在 开 始 (
- Page 88 and 89:
左 2 ->无 1 ++ --右 2 **右 1 !~
- Page 90 and 91:
and 10 * 20; # rand (10 * 20)rand(1
- Page 92 and 93:
表 环 境 里 进 行 的 。 这
- Page 94 and 95:
的 真 值 类 型 是 模 式 的
- Page 96 and 97:
1. > 4; # 返 回 23.10 命 名 单
- Page 98 and 99:
的 文 件 , 看 看 某 些 东
- Page 100 and 101:
print "Can do.\n" if -r $a || -w _
- Page 102 and 103:
这 些 操 作 符 对 数 字 值
- Page 104 and 105:
在 标 量 环 境 里 ,.. 返 回
- Page 106 and 107:
?: 的 优 先 级 比 逗 号 高
- Page 108 and 109:
每 个 操 作 符 需 要 一 个
- Page 110 and 111:
atan2(1,3);是 用 两 个 参 数
- Page 112 and 113:
和 许 多 编 程 语 言 不 同
- Page 114 and 115:
混 合 语 句 是 用 表 达 式
- Page 116 and 117:
if 语 句 比 较 直 接 了 当
- Page 118 and 119:
}# $line 现 在 超 出 范 围
- Page 120 and 121:
...}上 面 这 样 等 效 于 写
- Page 122 and 123:
s/ham/turkey/ for @christmas, @east
- Page 124 and 125:
文 。 如 果 循 环 原 型 是
- Page 126 and 127:
# 现 在 处 理 $line}下 面 是
- Page 128 and 129:
}} until $x++ > $z;对 于 last 而
- Page 130 and 131:
$def = 1;last SWITCH;};/^xyz/ && do
- Page 132 and 133:
4.5 goto尽 管 不 是 想 吓 唬
- Page 134 and 135:
sub myname ($);$me = myname $0|| di
- Page 136 and 137:
这 些 构 造 都 是 可 以 赋
- Page 138 and 139:
sub on { $state = 1}sub off { $stat
- Page 140 and 141:
# 这 里 编 译 的 代 码 看
- Page 142 and 143:
这 样 挺 好 ; 但 是 对 大
- Page 144 and 145:
use strict 'vars';这 意 味 着
- Page 146 and 147:
你 可 以 确 信 除 非 该 字
- Page 148 and 149:
5.2 模 式 匹 配 操 作 符从
- Page 150 and 151:
s/sugar/aspartame/# 把 一 个 替
- Page 152 and 153:
print "Date: $2\n";$`, $&, $' 和
- Page 154 and 155:
m/\w+: (\s+ \w+) \s* \d+/x; # 一
- Page 156 and 157:
如 果 PATTERN 计 算 出 的 结
- Page 158 and 159:
$last = $1 if /(^neur.*)/;}print $f
- Page 160 and 161:
s{version\s+([0-9.]+)}{$Names{$1}?
- Page 162 and 163:
}5.2.3.2 当 全 局 替 换 不
- Page 164 and 165:
如 果 声 明 了 /c 修 饰 词
- Page 166 and 167:
有 些 简 单 的 元 字 符 就
- Page 168 and 169:
(?(...)... ...) 是 匹 配 if-then
- Page 170 and 171:
尽 管 字 符 替 换 操 作 符
- Page 172 and 173:
点 元 字 符 经 常 和 量 词
- Page 174 and 175:
释 utf8 的 含 义 , 参 阅 本
- Page 176 and 177:
IsC ? 错 误 控 制 代 码 等
- Page 178 and 179:
IsDCcompat ? 标 识 ( 杂 项 )下
- Page 180 and 181:
sub NAME PROTOsub NAMEBLOCKATTRS BL
- Page 182 and 183:
现 在 , 如 果 你 将 设 计
- Page 184 and 185:
# 检 查 我 们 是 否 在 列
- Page 186 and 187:
C 和 C++ 程 序 员 很 可 能
- Page 188 and 189:
}return @retlist;}下 面 是 一
- Page 190 and 191:
方 法 调 用 中 也 不 起 作
- Page 192 and 193:
}}sub catch (&) { $_[0] }try {die "
- Page 194 and 195:
sub N () { int(GLARCH_VAL) / 3 }BEG
- Page 196 and 197:
func $h{stuff}[-1];# 这 个 也
- Page 198 and 199:
如 果 你 正 传 递 参 数 到
- Page 200 and 201:
1. 注 释 , 以 第 一 列 为 #
- Page 202 and 203:
@>$system, $%, $date---------------
- Page 204 and 205:
$FORMAT_NAME= "My_Other_Format";$FO
- Page 206 and 207:
^
- Page 208 and 209:
第 八 章 引 用不 管 是 从
- Page 210 and 211:
一 个 引 用 可 以 指 向 任
- Page 212 and 213:
'Antony' => 'Cleo' . 'patra',};对
- Page 214 and 215:
我 就 直 译 为 “ 赐 福 ”
- Page 216 and 217:
在 特 别 的 环 境 里 , 你
- Page 218 and 219:
$bar =$$scalarref;push(@$arrayref,
- Page 220 and 221:
解 引 用 的 类 型 是 由 右
- Page 222 and 223:
8.3.4 使 用 对 象 方 法如
- Page 224 and 225:
print delete $ph->[0]{age};# 现
- Page 226 and 227:
}如 果 你 在 一 个 字 串
- Page 228 and 229:
my $newfunc = sub {my $target = shi
- Page 230 and 231:
名 的 非 常 技 巧 性 的 方
- Page 232 and 233:
这 么 用 的 功 能 是 非 常
- Page 234 and 235:
$hash{ shift @_ }8.5.1 引 用 不
- Page 236 and 237:
即 使 $a 应 该 在 块 的 结
- Page 238 and 239:
print $ref_to_AoA->[2][3];# 打 印
- Page 240 and 241:
请 注 意 下 面 这 些 无 法
- Page 242 and 243:
}}在 这 个 例 子 里 , 我 们
- Page 244 and 245:
因 为 $AoA 必 须 是 一 个
- Page 246 and 247:
jetsons => [ "george", "jane", "elr
- Page 248 and 249:
}print "\n";}或 者 通 过 以
- Page 250 and 251:
push @AoH, $rec;}while () {push @Ao
- Page 252 and 253:
husband => "fred",pal=> "barney",},
- Page 254 and 255:
$HoH{$group} = {get_family($group)}
- Page 256 and 257:
( 糟 糕 的 是 , 需 要 存 储
- Page 258 and 259:
edit => sub { $edited++; editmsg($m
- Page 260 and 261:
flintstones => {series=> "flintston
- Page 262 and 263:
$TV{ $rec->{series} } = $rec;你
- Page 264 and 265:
print $TV{simpsons}{members}[2]{age
- Page 266 and 267:
就 象 我 们 在 第 八 章 ,
- Page 268 and 269:
$SIG{QUIT} = *quit_catcher;$SIG{QUI
- Page 270 and 271:
*dick = \$richard;这 样 就 令 $
- Page 272 and 273:
*sym = \&pippin;如 果 你 从 另
- Page 274 and 275:
}print blarg(20);# 打 印 :I see m
- Page 276 and 277:
第 十 一 章 模 块模 块 是
- Page 278 and 279:
不 过 , 它 们 在 两 个 方
- Page 280 and 281:
equire Exporter;our @ISA = ("Export
- Page 282 and 283:
sub import { $Bestiary::zoo = "mena
- Page 284 and 285:
语 意 改 变 了 。 如 果 模
- Page 286 and 287:
当 一 个 对 象 调 用 attack(
- Page 288 and 289:
方 法 和 普 通 子 过 程 之
- Page 290 and 291:
$nemesis = summon Balrog home => "M
- Page 292 and 293:
甚 至 英 语 在 这 方 面 也
- Page 294 and 295:
一 个 引 用 赐 福 (bless) 成
- Page 296 and 297:
my $class = ref($invocant) || $invo
- Page 298 and 299:
sub clone {my $model = shift;my $se
- Page 300 and 301:
如 果 你 给 你 的 C 编 译
- Page 302 and 303:
$colt = Horse::breed($molly, $stall
- Page 304 and 305:
如 果 对 调 用 者 的 类 和
- Page 306 and 307:
print "Running versino ", Thread->V
- Page 308 and 309:
甚 至 你 只 是 声 明 了 这
- Page 310 and 311:
$self->SUPER::DESTROY if $self->can
- Page 312 and 313:
if (@_) { $self->{name} = shift }re
- Page 314 and 315:
sub aliases {my $self = shift;if (@
- Page 316 and 317:
这 种 方 法 在 声 明 获 取
- Page 318 and 319:
12.7.3 使 用 Autoloading( 自 动
- Page 320 and 321:
12.7.4 用 闭 合 域 生 成 指
- Page 322 and 323:
下 面 是 一 个 解 释 如 何
- Page 324 and 325:
然 后 我 们 进 行 各 个 检
- Page 326 and 327:
12.8 管 理 类 数 据我 们 已
- Page 328 and 329:
{my $Debugging = 0;# 词 法 范
- Page 330 and 331:
象 这 样 的 明 确 的 解 引
- Page 332 and 333:
里 用 + 表 示 如 何 相 加 )
- Page 334 and 335:
范 畴转 换算 术"" 0+ bool操
- Page 336 and 337:
制 你 重 载 neg。( 当 然 ,
- Page 338 and 339:
package main;for $normal (qw/perl N
- Page 340 and 341:
在 加 州 , 这 些 打 印 出 :
- Page 342 and 343:
现 在 , 从 这 开 始 。 假
- Page 344 and 345:
sub import { orverload::constant (
- Page 346 and 347:
3. overload::Method(OBJ,OPERATOR):
- Page 348 and 349:
$object = tied VARIABLE;上 面 两
- Page 350 and 351:
sub STORE { ${ $_[0] } = $_[1] }#
- Page 352 and 353:
CLASSNAME->TIESCALAR(LIST)每 当
- Page 354 and 355:
这 回 我 们 决 定 : 如 果 F
- Page 356 and 357:
这 里 是 一 个 简 单 的 Tie
- Page 358 and 359:
Testing Filetest: detectedTesting N
- Page 360 and 361:
运 行 的 时 候 , 这 个 程
- Page 362 and 363:
当 设 置 捆 绑 了 的 数 组
- Page 364 and 365:
print STDERR "deleting!\n";if ($ind
- Page 366 and 367:
变 量 的 一 个 好 特 性 是
- Page 368 and 369:
my ($self, $key, $value) = @_;push
- Page 370 and 371:
my $dir = (getpwname($user))[7]or c
- Page 372 and 373:
SELF->STORE(KEY, VALUE)当 捆 绑
- Page 374 and 375:
delete $self->{CONTENTS}->{$dot};un
- Page 376 and 377:
sub DESTROY{carp &whowasi if $DEBUG
- Page 378 and 379:
over the lazy dog.END# 现 在 从
- Page 380 and 381:
}SELF->READLINE当 用 尖 角 操
- Page 382 and 383:
当 你 对 一 个 捆 绑 的 文
- Page 384 and 385:
这 个 方 法 声 明 将 要 用
- Page 386 and 387:
# 这 里 是 放 你 想 跟 踪
- Page 388 and 389:
$self->pathname($name);# NEWif ($fo
- Page 390 and 391:
my ($class, @cmd) = @_;no warnings
- Page 392 and 393:
}1;最 后 四 行 以 我 们 的
- Page 394 and 395:
$ok += print $fh @_;}return $ok = @
- Page 396 and 397:
sub FETCH {my $self = shift;return
- Page 398 and 399:
use Remember;my ($fred, $x);$x = ti
- Page 400 and 401:
器Tie::SyslogTie::TextDirTie::Tran
- Page 402 and 403:
Perl 只 有 在 它 认 为 有
- Page 404 and 405:
utf8 用 法 主 要 是 一 个
- Page 406 and 407:
"o\N{COMBING TILDE BELOW}" =~ /\X/
- Page 408 and 409:
一 个 可 读 性 更 好 的 Uni
- Page 410 and 411:
Perl 使 用 一 种 简 单 的
- Page 412 and 413:
{local $SIG{INT} = 'IGNORE';... #
- Page 414 and 415:
sub reaper {my $zombie;our %Kid_Sta
- Page 416 and 417:
16.1.4 阻 塞 信 号有 时 候 ,
- Page 418 and 419:
flock(FH, LOCK_SH) or die "can't lo
- Page 420 and 421:
or die "can't write-lock counterfil
- Page 422 and 423:
open(INPUT, "< /etc/motd") or die "
- Page 424 and 425:
fcntl( INPUT, F_SETFD, 0)or die "Ca
- Page 426 and 427:
or die "can't fork: $!";local $SIG{
- Page 428 and 429:
PIPE 信 号 , 如 果 你 还 没
- Page 430 and 431:
unless (open ($fh, ">", $path)) {wa
- Page 432 and 433:
open 函 数 不 允 许 你 这
- Page 434 and 435:
close FROM_PARENT; close TO_PARENT;
- Page 436 and 437:
POSIX::mkfifo($fpath, 0666) or die
- Page 438 and 439:
sub main{my $mem = ShMem->alloc("Or
- Page 440 and 441:
$self->put($value);return $self;}
- Page 442 and 443:
shmctl ($self->{SHMKEY}, IPC_RMID,
- Page 444 and 445:
$socket = IO::Socket::INET->new(Pee
- Page 446 and 447:
16.5.2 网 络 服 务 器下 面
- Page 448 and 449:
($port, $iaddr) = unpack_sockaddr_i
- Page 450 and 451:
重 新 赋 值 , 这 条 命 令
- Page 452 and 453:
or die "send: $!";}# 时 间 服
- Page 454 and 455:
不 过 , 通 过 不 懈 的 努
- Page 456 and 457:
没 有 实 现 它 们 的 方 法
- Page 458 and 459:
现 在 是 你 的 顶 层 子 过
- Page 460 and 461:
在 一 个 发 配 了 的 子 线
- Page 462 and 463:
的 函 数 。( 在 不 是 为
- Page 464 and 465:
{lock $var;if ($var == 0) {yield;$v
- Page 466 and 467:
thread 2: frob 12thread 3: frob 13d
- Page 468 and 469:
条 事 件 以 唤 醒 其 他 正
- Page 470 and 471:
请 注 意 , 队 列 和 普 通
- Page 472 and 473:
Thread::Signal 允 许 你 启 动
- Page 474 and 475:
4. 执 行 阶 段最 后 , 就 是
- Page 476 and 477:
的 历 史 增 长 模 式 。 最
- Page 478 and 479:
这 个 回 合 是 可 选 的 ;
- Page 480 and 481:
与 Perl 的 编 译 器 相 比 ,P
- Page 482 and 483:
多 关 于 mod_perl 的 东 西 ,
- Page 484 and 485:
ByteLoader ? 模 块 是 源 码
- Page 486 and 487:
B::Deparse 是 一 个 很 好 的
- Page 488 and 489:
(CHECK 可 以 理 解 为 “ 检
- Page 490 and 491:
用 的 话 , 这 样 的 反 序
- Page 492 and 493:
很 幸 运 的 是 Perl 是 在 Un
- Page 494 and 495:
#! /bin/sh -- # -*- perl -*- -peval
- Page 496 and 497:
放 在 *.cmd 文 件 的 第 一
- Page 498 and 499:
Windows NT 上 的 CMD.EXE 程 序
- Page 500 and 501:
% awk -F: '$7 && $7 !~ /^\/bin/' /e
- Page 502 and 503:
一 些 的 说 法 是 你 在 编
- Page 504 and 505:
EXTENSION 用 于 修 改 旧 文
- Page 506 and 507:
next;}open(ARGVOUT, ">$ARGV");selec
- Page 508 and 509:
请 注 意 在 处 理 这 个 开
- Page 510 and 511:
find . -mtime +7 -print | perl -nle
- Page 512 and 513:
-S 让 Perl 使 用 PATH 环 境
- Page 514 and 515:
Perl 到 C 的 代 码 生 成 器
- Page 516 and 517:
#! 开 头 并 包 括 字 串 “p
- Page 518 and 519:
Perl 库 文 件 的 目 录 。
- Page 520:
模 块 使 用 PWD, 而 CGI 模