13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

-S 让 <strong>Perl</strong> 使 用 PATH 环 境 变 量 搜 索 该 脚 本 ( 除 非 脚 本 的 名 字 包 含 目 录 分 隔 符 )。通 常 , 这 个 开 关 用 于 帮 助 在 那 些 不 支 持 #! 的 平 台 上 仿 真 #!。 在 许 多 有 兼 容Bourne 或 者 C shell 的 平 台 上 , 你 可 以 用 下 面 这 些 :#! /usr/bin/perleval "exec /usr/bin/perl -S $0 $*"if $running_under_some_shell;系 统 忽 略 第 一 行 然 后 把 这 个 脚 本 交 给 /bin/sh, 然 后 它 继 续 运 行 然 后 试 图 把 <strong>Perl</strong>脚 本 当 作 一 个 shell 脚 本 运 行 。 该 shelll 把 第 二 行 当 作 一 个 普 通 的 shell命 令 执 行 , 因 此 启 动 <strong>Perl</strong> 解 释 器 。 在 一 些 系 统 上 ,$0 并 不 总 是 包 含 路 径 全 名 ,因 此 -S 告 诉 <strong>Perl</strong> 在 必 要 的 时 候 搜 索 该 脚 本 。 在 <strong>Perl</strong> 找 到 该 脚 本 以 后 , 它分 析 该 行 并 且 忽 略 它 们 , 因 为 变 量 $running_under_some_shell 总 是 为 假 。 一 个更 好 的 构 造 是 $* 应 该 是 ${1+"$@"}, 它 可 以 处 理 文 件 名 中 嵌 入 的 空 白 这 样 的东 西 , 但 如 果 该 脚 本 被 csh 解 释 将 不 能 运 行 , 为 了 用 sh 代 替 csh 启 动 , 有 些系 统 必 须 用 一 个 只 有 一 个 冒 号 的 行 替 代 #! 行 ,<strong>Perl</strong> 会 礼 貌 地 忽 略 那 样 的 行 。其 他 不 能 支 持 这 些 的 系 统 必 须 用 一 种 完 全 迂 回 的 构 造 , 这 种 构 造 可 以 在 任 何csh,sh 或 者 perl 里 运 行 , 这 种 构 造 是 这 样 的 :eval '(exit $?0)' && eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'& eval 'exec /usr/bin/perl -S $0 $argv:q'if -;512

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!