tr///
y///
这是转换(也称之为翻译)操作符,它和 Unix sed 程序里的 y/// 操作符类似,但不论从任何人的角度来看都更好些。参阅第五章。
truncate FILEHANDLE, LENGTH
truncate EXPR, LENGTH
这个函数截断在 FILEHANDLE 上打开的或者 EXPR 命名的文件到指定的长度。如果在你的系统上,ftruncate(2) 或者等效的东西没有实现,那么该函数抛出一个例外。(如果你有磁盘空间的话,你总是可以通过拷贝文件的开头来截断它。)该函数在成功的时候返回真,否则返回 undef。
uc EXPR
uc
这个函数返回 EXPR 的大写的版本。它是实现双引号字串里的 \U 逃逸的内部函数。Perl 将试图在考虑你的区域设置的前提下做正确的事情,不过我们仍在努力让这个功能也能用于 Unicode。参阅 perllocalle 手册页获取最新的进展。在任何情况下,如果 Perl 使用 Unicode 表,uc都会转换成大写字符而不是标题字符。参阅 ucfirst 获取转换成标题字符的信息。
ucfirst EXPR
ucfirst
这个函数返回将 EXPR 第一个字符标题化(“Unicode”里的标题字符)的版本。而其他字符则不加触动。它是实现双引号字串里的 \u 逃逸的内部函数。如果你 use locale 并且你的数据看上去不象 Unicode,那么 Perl 会考虑你当前的 LC_CTYPE 区域设置,但是我们现在不能做任何保证。
要强制字串里第一个字符是标题字符而其他的都是小写字符,你可以用:
ucfirst lc $word
它等效于"\u\L$word"。
umask EXPR
umask
这个函数用 umask(2) 系统调用为该进程设置 umask 并返回原来的那个。你的 umask 告诉操作系统在创建新文件的时候,哪个权限位是不允许的,包括那些正好是目录的文件。如果省略了 EXPR,那么该函数只是返回当前 umask。比如,为了确保“user”位是允许,而“other”位是不允许的,你可以用下面的代码:
umask((umask() & 077) | 7); # 不改变组的权限位
请记住 umask 是一个数字,通常是以八进制形式给出的;它不是八进制位的字串。如果你拿到的是一个字串,又见 oct,还要记住这个 umask 位是普通权限位的补。
Unix 权限位 rwxr-x--- 是用三个三位集,或者三个八进制位来表示的:0750(前面的 0 表示它是八进制而不是其中一位)。因为 umask 的位是翻转的,所以它代表关闭了的权限位。你提供给你的 mkdir 或者 sysopen 的权限值(或者“模式”)都会被你的 umask 修改,所以就算你告诉sysopen 创建一个权限为 0777 的文件,如果你的 umask 是 0022,那么创建出来的文件的权限也是 0755。如果你的 umask 是 0027(组不能写,其他不能读,写,和执行),那么给 sysopen 传递一个 MASK 为 0666 的值将创建一个模式为 0640 的文件(因为 0666 & ~0027 是0640)。
这里是一些建议:使用模式 0666 创建普通文件(在 sysopen 里)以及 0777 给目录(用 mkdir)和可执行文件。这样就给予用户自由的选择:如果它们想保护文件,那么它们选择进程 umask 022,027,或者甚至特别的掩码 077。程序最好让用户自己做策略决策。这条规则的例外是那些需要写私人文件的程序:邮件文件,网络浏览器的 cookie,.rhost 文件,等等。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-28372-23.html
想什么想啊
我们也希望为他筹多点钱去治疗
定期存款100亿
那也是后期包装运输保存的问题