perl 中 $/ 代表了什么意思?

作者&投稿:肥鹏 (若有异议请与网页底部的电邮联系)
perl语言中$$是什么意思~

好象是动态变量,快10年前用过的东西了,记不清楚了。
比方:$opt_t 的值是字符串 abc
$task_id 的值是字符串 def
那么$$task_id=$opt_t以后
$def 的值就是字符串 abc

好象是这样的,我记得PERL里的变量有类似的用法,很奇怪,其他语言里没有的。

$! 根据上下文内容返回错误号或者错误串
$” 列表分隔符
$# 打印数字时默认的数字输出格式
$$ Perl解释器的进程ID
$% 当前输出通道的当前页号
$& 与上个格式匹配的字符串
$( 当前进程的组ID$) 当前进程的有效组ID
$* 设置1表示处理多行格式.现在多以/s和/m修饰符取代之.
$, 当前输出字段分隔符
$. 上次阅读的文件的当前输入行号
$/ 当前输入记录分隔符,默认情况是新行
$: 字符设置,此后的字符串将被分开,以填充连续的字段.
$; 在仿真多维数组时使用的分隔符.
$? 返回上一个外部命令的状态
$@ Perl解释器从eval语句返回的错误消息
$[ 数组中第一个元素的索引号
$\ 当前输出记录的分隔符
$] Perl解释器的子版本号
$^ 当前通道最上面的页面输出格式名字
$^A 打印前用于保存格式化数据的变量
$^D 调试标志的值
$^E 在非UNIX环境中的操作系统扩展错误信息
$^F 最大的文件捆述符数值
$^H 由编译器激活的语法检查状态
$^I 内置控制编辑器的值
$^L 发送到输出通道的走纸换页符
$^M 备用内存池的大小
$^O 操作系统名
$^P 指定当前调试值的内部变量
$^R 正则表达式块的上次求值结果
$^S 当前解释器状态
$^T 从新世纪开始算起,脚步本以秒计算的开始运行的时间
$^W 警告开关的当前值
$^X Perl二进制可执行代码的名字
$_ 默认的输入/输出和格式匹配空间
$| 控制对当前选择的输出文件句柄的缓冲
$~ 当前报告格式的名字
$` 在上个格式匹配信息前的字符串
$’ 在上个格式匹配信息后的字符串
$+ 与上个正则表达式搜索格式匹配的最后一个括号
$< 当前执行解释器的用户的真实ID
$ 含有与上个匹配正则表达式对应括号结果
$= 当前页面可打印行的数目
$> 当前进程的有效用户ID包含正在执行的脚本的文件名
$ARGV 从默认的文件句柄中读取时的当前文件名
%ENV 环境变量列表
%INC 通过do或require包含的文件列表
%SIG 信号列表及其处理方式
@_ 传给子程序的参数列表
@ARGV 传给脚本的命令行参数列表
@INC 在导入模块时需要搜索的目录列表
$-[0]和$+[0] 代表当前匹配的正则表达式在被匹配的字符串中的起始和终止的位置

$/      为输入记录分隔符,默认为换行符。该变量会影响 Perl对“行”这一概念的理解。其功能类似于 awk 中的 RS变量,在被设置为空字符串时同样会将空白行作为终止标志。(空白行不能含有任何空格或制表符。)

你可以将其设置为含有多个字符的字符串,以匹配多字符的终止标志;也可以设为"undef" 以便一直读到文件结束。


当文件含有连续的空白行时,把它设为"

" 和设为 "" 有少许不同:

  • 设为 ""  会把两个或更多连续的空白行视为单个 空白行;

  • 而设为 "

    "  则只是盲目地假定其后输入的字符属于下一段,即使这些字符是换行符也一样。(助记:在引用诗句时会用 /作为行间的分隔。)

local $/; # enable "slurp" mode
local $_ = ; # whole file now here
s/
[ ]+/ /g;

切记:$/ 的内容是一个字符串,而不是正则表达式。

  • 将 $/设为整数、存有整数的标量或可转换成整数的标量这些值的引用时,Perl会尝试读入记录而不是行,最大记录长度就是引用的那个整数。

因此这段 代码:

local $/ = \32768; # or \"32768", or \$var_containing_32768
open my $fh, $myfile or die $!;
local $_ = ;

会从 FILE 读取一条不长于 32768字节的记录。如果你不是在读取一个面向记录的文件(或者所用的 OS没有面向记录的文件类型),那很可能每次读取都得到一整块的数据。若某条记录比你所设置的记录长度还大,就会把该记录拆成若干片 返回。

参见 "Newlines" in perlport 以及 $.。



它会改变你读取文件时候,对行的分隔符,一般行都是根据回车分隔,
local $/ = ">" 会根据 > 来分隔行。

自带的全局变量,默认值为“\n". perl中”行“的概念就由$/决定。
{
$data = "this>";
local $/ = ">";
chomp($data);
}
$data的值就是”this".


巴林左旗15699989725: perl语言中$$是什么意思 -
蔺眉胆舒: $$ Perl解释器的进程ID.补充:$组合还有很多标记:$! 根据上下文内容返回错误号或者错误串.$” 列表分隔符.$# 打印数字时默认的数字输出格式.$% 当前输出通道的当前页号.$& 与上个格式匹配的字符串.$( 当前进程的组ID$) 当前进程的有效组ID.$* 设置1表示处理多行格式.现在多以/s和/m修饰符取代之.$, 当前输出字段分隔符.$. 上次阅读的文件的当前输入行号.$/ 当前输入记录分隔符,默认情况是新行.$: 字符设置,此后的字符串将被分开,以填充连续的字段.

巴林左旗15699989725: perl中$+什么意思? -
蔺眉胆舒: 表示圆括号中的子表达式匹配的部分.大多数情况,只需要使用$1, $ 2 , 等 ,而不需要用$+.当正则表达式中有一系列括号时,$+是有用的. 例如: $_ = "Alpha Be taDelt aGamma "; /Alpha (.*)Del t a(.*)/; print "The last ma tch was $ +\n";

巴林左旗15699989725: perl 程序中$?代表什么? -
蔺眉胆舒: 当你的 perl 程序呼叫*外部(perl script以外的) 程序, 而又发生错误时, $? 就会设成一 2 byte 的非 0 值字串, 第 1 byte 是外部程序的 exit code ( 如 1 代表 错误 ) 第 2 byte 就是本程序的处理手法 ( 如 die, warn 之类的 )*如 $x = `xcopy C:\*.* D:\*.*"; 这里 xcopy 就是一个外部程序

巴林左旗15699989725: perl 中 $/ 代表了什么意思? -
蔺眉胆舒: 自带的全局变量,默认值为“\n". perl中”行“的概念就由$/决定.{$data = "this>"; local $/ = ">"; chomp($data); }$data的值就是”this".

巴林左旗15699989725: perl 中 $/=">"是什么意思? -
蔺眉胆舒: 叫记录分隔符,上网搜一下各个符号的意思.就是说各个记录用什么符号分割,默认是换行,所以在读入文件时候是读入一行.假设有文件a.txt:abcde;fghij 有如下代码:open IN, "< a.txt"; $l = <IN>; print $l; 执行结果:abcde;fghij (隐含一个换行符)$/ = ";"; open IN, "< a.txt"; $l = <IN>; print $l; 执行结果:abcde;

巴林左旗15699989725: Perl中的默认变量@ - 和$ - 什么意思?深圳 -
蔺眉胆舒: @_ 在某个函数内,数组 @_ 包含传递给该函数的所有参数.$_ 默认的输入/输出和格式匹配空间-------------------------------------------------------------------------------------------------------- @_的示例:#!/bin/perl -w use strict;&fun( 111,222,333 ); sub fun() { print...

巴林左旗15699989725: 奇怪的PERL 脚本符号的含义:if($@){^^^^} $@代表什么?umask(0);$|++; $|++; 什么含义? $] 代表什么? -
蔺眉胆舒: $@保存的是eval{}的出错信息. $| 非0代表的是自动清除缓冲区, $]代表perl版本号

巴林左旗15699989725: perl中@$是什么意思 -
蔺眉胆舒: 指向变量的数组,例如变量$reftrans的值为字符串'abc',那么@$reftrans就相当于@abc

巴林左旗15699989725: perl 中$::的含义及用法 -
蔺眉胆舒: While the :: symbol can be thought of as similar to the period in a C struct, it is much more akin to the :: class scope operator in C++: a.b.c; /* something in C */ a::b::c(); // function in C++ $a::b::c; # a scalar in Perl 5 @a::b::c; # a list in Perl 5 %a::b::c; ...

巴林左旗15699989725: perl中范围选择符 $/ 怎么用?请给出一个例子.谢谢!做正则匹配时需要用. -
蔺眉胆舒: $/在perl里是行分隔符,默认是 \n.在RE里用到的话一方面是用<>读取文件的时候每遇到$/ perl就截取当作一行,也可以设为多个字符的字符串.行分割另一方面就是在正则匹配中的 sm 修饰符了,s是单行模式,即即便字符串里面含有\n也只把...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网