perl中如何控制子进程的标准输入?

作者&投稿:终龙 (若有异议请与网页底部的电邮联系)
perl 对另一子进程的输入输出重定向问题。~

$out = `command.exe`; # 这个是 backtick, 打 "~" 不按 shift 那个键的

if ( $out eq "...." ) {
$x = "xxx";
}
else {
$x = "yyy";
}
system "command.exe", $x;

子进程变僵尸由于子进程运行过久,父进程没有收到子进程运行完后的指令导致的!可以先建立一个空的子进程,子进程里在开一个孙进程,在父进程等待子进程结束就可以的!这样孙进程的父进程die掉了,孙进程就会被系统托管,运行完会被自动杀掉,不会成为僵尸进程

@_ 在某个函数内,数组 @_ 包含传递给该函数的所有参数。
$_ 默认的输入/输出和格式匹配空间
--------------------------------------------------------------------------------------------------------
@_的示例:
#!/bin/perl -w
use strict;
&fun( 111,222,333 );
sub fun()
{
print @_;
}
这里会把传入函数的参数111222333打印出来。
---------------------------------------------------------------------------------------------
$_示例:
下面的几对代码都是等同的:
while (<>) # equivalent only in while!
while (defined($_ = <>))

/^Subject:/
$_ =~ /^Subject:/

tr/a-z/A-Z/
$_ =~ tr/a-z/A-Z/

chomp
chomp($_)

以下是几处即使没有写明 Perl 也会假定使用 $_ 的地方:

* 各种单目函数,包括像 ord() 和 int() 这样的函数以及除 "-t"
以外所有的文件 测试操作 ("-f","-d"),"-t" 默认操作 STDIN。

* 各种列表函数,例如 print() 和 unlink()。

* 没有使用 "=~" 运算符时的模式匹配操作 "m//"、"s///" 和
"tr///"。

* 在没有给出其他变量时是 "foreach" 循环的默认迭代变量。

* grep() 和 map() 函数的隐含迭代变量。

* 当 "while" 仅有唯一条件,且该条件是对 "<FH>"
操作的结果进行测试时,$_ 就是存放输入记录的默认位置。除了
"while" 测试条件之外不会发生这种情况。

(助记:下划线在特定操作中是可以省略的。)
--------------------------------------------------------------------------------------------------
@_和$_都是perl很常用的特殊变量。建议系统看一下《perl语言入门》。
----------------------------------------------------------------------------------------------------------------
另附perl常用特殊变量列表:
perl 内置变量

$- 当前页可打印的行数,属于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] 代表当前匹配的正则表达式在被匹配的字符串中的起始和终止的位置


可以的,你把需要输入的数据提前存数txt文件,再打开文件句柄,读取数据就OK了


制氧气机什么牌子好?
而国产制氧机主打的是性价比,功能人性化,比如,Ueerl·愉尔5L医用级制氧机Y-504W,可以72小时持续制氧,可以雾化、可以接呼吸机、可以远程遥控、语音播报,可以实时显示氧气浓度,更主要的是采用自动湿化氧气设计,省去了繁琐的加水、换水流程,非常人性化。不管是国产还是进口,只要是正规产品都可以...

家用制氧机哪个牌子好?
家用制氧机选择时,应关注品牌信誉、产品质量和售后服务。在选购时,确保所选品牌具备合法的医疗注册证和生产许可证。目前,国内知名的制氧机品牌包括大金、亚适、飞利浦、Ueerl·愉尔、新松、欧姆龙、海龟、鱼跃、海尔和氧精灵等。在挑选制氧机时,应考虑以下几个关键因素:1. 预算:制氧机的价格区间...

粽子的由来,传说
详情请查看视频回答

什么牌子的制氧机好,制氧机排名前五推荐
英维康制氧机虽为国内苏州生产组装,但其凭借“英维康”这个美国品牌优势,深谙国人消费心理,悄然打开国之大门,位居榜二。国内市场该品牌均为5L或以上机型,其噪音在同品类产品中虽不算低,但其凭借“静音型”的卖点和洋品牌的说辞,众多国人被其吸引。第三名:凯亚制氧机 由国内最权威压缩机供应商...

hm衣服是什么牌子?
1.hm服装是一个来自瑞典的服装品牌,由Erlin Pearson于1947年创立。2.hm是品牌的英文缩写,产品多元化,主要涉及女装、男装、童装、化妆品以及各种配饰,其中女装的市场占有率比较高,也是品牌的主打产品。Hm对产品风格和市场定位有着非常独特的看法,其服装款式新颖,融合了各类服装的流行元素。

想了解一下,双人微高压氧舱适合家用么?
适合的呀,我家就是选择的双人微高压氧舱,Ueerl愉尔高压氧舱这个牌子的,之前也是康复理疗中心了解到的这款设备。双人微高压氧舱能够为家庭成员提供一个共享的健康护理空间,家庭成员可以共同体验氧疗,增进彼此的感情,同时享受健康护理的益处。

吉隆坡国际机场T2到PWTC太子世界贸易中心怎么坐车?
按一般情况,您出机场已接近 23:00了,首先要搭乘从 KLIA 2 发车的轨道交通(ERL Ekpress)去吉隆坡中央车站(KL Sentral);这时还有6个车次(22:55、23:15、23:35、23:55、00:25、00:55),30分钟后抵达 KL Sentral。这里距离 PWTC 只有 7公里,可以到站外搭乘出租车,大约16 马币(不过,...

BALDlERl手表什么牌子?
意大利的

请问空调上写有Supaerl的是什么牌子的空调啊?
CY空调是船用空调拼音简写,不是品牌,是空调的一种类型。很多品牌都有船用空调系列,例如格力、美的、科龙等

erluii是啥牌子?
但是安踏跟李宁然后今年合作联袂推出的一款最高系列的品牌,他非常非常的棒。

天河区19783195389: perl中如何控制子进程的标准输入? -
夔海氧氟: @_ 在某个函数内,数组 @_ 包含传递给该函数的所有参数.$_ 默认的输入/输出和格式匹配空间--------------------------------------------------------------------------------------------------------@_的示例:#!/bin/perl -wuse strict;&fun( 111,222,333 );sub fun(){ print ...

天河区19783195389: perl中,执行外部程序需要输入时,如何通过perl给外部程序输入? -
夔海氧氟: 如果你可以控制新进程vcs的行为,那么有很多种进程间通信的方式可以使用,例如,管道,信号,socket等.如果你不能控制新进程的行为,但是知道新进程会给出什么样的提示,以及知道应该给予什么样的输入,则可以使用expect库.

天河区19783195389: perl 对另一子进程的输入输出重定向问题. -
夔海氧氟: $out = `command.exe`; # 这个是 backtick, 打 "~" 不按 shift 那个键的 if ( $out eq "...." ) { $x = "xxx"; } else { $x = "yyy"; } system "command.exe", $x;

天河区19783195389: perl如何监控一个程序是否有输入信息 -
夔海氧氟: 如果是linux的话,可以用strace监控指定进程,用perl过滤出其中的read()等有关输入的关键字所在的行,然后分析该行的内容,就可以得到程序的输入信息了.strace打印出来的内容像下面这样:rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = ...

天河区19783195389: perl暂停等待输入然后结束 -
夔海氧氟: system 'pause'; 应该可以,等待一个标准输入应该也可以,我都用过,输入空格不会退出 对了,这个标准输入最终要输入一个回车才可以,你要是任意输入的话,就pause好了,

天河区19783195389: 求教一个问题:perl语言,怎么把字符串每一个字符读到数组里 使用标准输入获得字符串
夔海氧氟: my $string = "China"; my @array = split //, $string; print "$_ $/" foreach @array;

天河区19783195389: perl system 输入命令 -
夔海氧氟: 假设你在命令行下面执行的方式是:a.exe 1 2 3 4 然后回车.就执行a.exe 那么你perl里面调用的时候直接 `a.exe 1 2 3 4`; 注意 ` 这个符号是英文输入状态下,键盘上方1按键旁边那个符号.半角的.

天河区19783195389: 如何在Perl里面执行外部输入代码 -
夔海氧氟: dos命下执行perl脚本方法:1、输入 perltest.pl然后就能执行了.2、其中test.pl是所要运行的文件的名称.3、用命令指示符则说不是内部或外部的命令.4、这个说明安装没有自动把perl的文件路径自动添加到环境变量中去.具体方法:右击 的电脑--属性--高级--环境变量--在系统变量部分--双击path--在最后添加perl的安装路径即可.

天河区19783195389: 如何才能kill掉一个perl脚本的所有子进程 -
夔海氧氟: 给两个思路,第一个就是每个生成的子进程的pid都保存在主进程里面,例如保存在数组里. 然后,在load数据之前,用kill函数将0号信号发送给每个子进程.kill函数的0号信号不会发送真正的信号,只是测试能否向某个进程发送信号.这样,如果每个子...

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