[转]perl里使用外部命令
1. system("command");
使用该命令将开启一个子进程执行引号中的命令,父进程将等待子进程结束并继续执行下面的代码。
2. exec("command");
效果同system命令类似,区别是不会开启子进程,而是取代父进程,因此执行完引号中的命令后进程即结束。一般和fork配合使用。
3. `command`;
使用反引号调用外部命令能够捕获其标准输出,并按行返回且每行结束处附带一个回车。反引号中的变量在编译时会被内插为其值。
4. open LIST "ls -l|";
open MORE "|more";
@list=<LIST>;
print MORE @list;
close(LIST);
close(MORE);
使用带管道的文件句柄来执行外部命令,使用方式与读写文件类似。可以从外部命令的输出读取数据,也可以将数据输出到外部命令作为输入。
5. defined(my $pid=fork) or die "Can not fork: $!\n";
unless ($pid) {
exec ("date");
}
waitpid ($pid,0);
使用fork将会开启子进程与父进程同时执行之后的代码,其中父进程中fork会返回一个非零的数,而子进程中将返回零。上面的代码完成和system("date")相同的功能。比起system单纯地调用外部命令,fork可以完成更加复杂的进程操作。
@args = (“command”, “arg1″, “arg2″);
system(@args) == 0
or die “system @args failed: $?”
if ($? == -1) {
print “failed to execute: $!\n”;
}
elsif ($? & 127) {
printf “child died with signal %d, %s coredump\n”,
($? & 127), ($? & 128) ? ‘with’ : ‘without’;
}
else {
printf “child exited with value %d\n”, $? >> 8;
}
exec (‘foo’) or print STDERR “couldn’t exec foo: $!”;
{ exec (‘foo’) }; print STDERR “couldn’t exec foo: $!”;
@result = readpipe( “ls -l /tmp” );
print “@result”;
drwxr-xr-x 2 root root 4096 Mar 19 11:55 testdir
$inject_command = “./ConfigChecker.bat F:/nic/3502/ARRAY-4AD2E0573/etc “.$device_name;
chdir “F:/TestTools/bin/”;
@temp_result = readpipe($inject_command);
open(result_file,”>result.txt”);
print result_file @temp_result;
close(result_file);
转载于:https://blog.51cto.com/yanwang/908926
[转]perl里使用外部命令相关推荐
- perl里嵌套shell命令转义符_Linux-包教包会系列之-shell
前言 还记得当年被 bat 支配的恐惧.比起 shell 脚本写 bat 脚本真的很费劲. 既然你能搞明白 java js 等这些高级语言,弄明白 shell 也是很简单的.学会简单的语法,再看看 t ...
- jdk12‘javac‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
前言: 安装JDK12遇到的问题以及学习过程, 我第一次用网上的安装办法,下载EXE后,配置好三个环境变量后运行,不行. 解决过程: 问题1:安装后javac命令运行时报错 jdk12'javac' ...
- Go 学习笔记(43)— Go 标准库之 os/exec(执行外部命令、非阻塞等待、阻塞等待、命令输出)
1. 概述 golang 下的 os/exec 包执行外部命令包执行外部命令.它包装了 os.StartProcess 函数以便更容易的修正输入和输出,使用管道连接I/O,以及作其它的一些调整. 与 ...
- Vue项目碰到‘webpack-dev-server’不是内部或外部命令,也不是可运行的程序或批处理文件报错...
最近公司里做vue项目,svn了前端同事的项目代码,装好环境,运行项目(安装步骤随便百度一下,很详细), 控制台里报错"'webpack-dev-server'不是内部或外部命令, 也不是可 ...
- Python 技术篇-pip安装提示:‘pip‘ 不是内部或外部命令,也不是可运行的程序或批处理文件,问题解决方法
问题展示: 之前还是好的,现在就不能用了. C:\Users\Administrator>pip 'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件. 解决方法: 首先我们在 pyt ...
- BAT批处理文件无法运行提示“/E /I /Y ‘XCOPY‘ 不是内部或外部命令,也不是可运行的程序或批处理文件”解决方法
windows 下的 system32 文件夹里包含了很多运行程序,其中就包括运行 bat 文件的程序. 环境变量中添加 C:\windows\system32; 或 %SystemRoot%\sys ...
- win10下处理“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”
用cmd调用某一命令的时候,经常会出现"xxx不是内部或外部命令,也不是可运行的程序或批处理文件",怎么处理这个问题呢? 看看命令有没有拼错 看看计算机里有这个程序不 看看path ...
- 'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件
今天安装完MYSQL8.0的版本,根据课本的提示,在CMD里运行,出现了'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件.在网上搜了一下,他的解决方法是这样的: 1.设置一下环境变量 ...
- Windows中的命令行提示符里的Start命令执行路径包含空格时的问题
转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...
最新文章
- ICRA 2021 | VINS 研讨会概要(附完整视频)
- 伺服驱动器接线怎么画_百格拉伺服驱动器维修常见故障现象及处理方法
- Android Studio下加入百度地图的使用 (一)——环境搭建
- 我对模板模式和策略模式的理解
- 深度学习中常见的损失函数
- gamma分布_深度学习需要掌握的 13 个概率分布(附代码)
- 谁在窥屏_TheShy直播被窥屏搞怕了,为了防止被窥屏,这个做法绝了
- 【剑指offer】面试题04:二维数组中的查找(java)
- 剪辑内核linux,Linux01-Linux编辑内核定制属于自己的内核49
- 用python解方程和微积分
- 百度大脑人脸离线识别SDK Windows版
- ie浏览器中图片被拉长
- oracle数据库表数据误删除恢复
- new(创建)一个对象时都发生了什么?
- 用电脑无线投屏到电视屏幕的连接方法
- Power bi 超市运营数据分析
- speedoffice(Excel)如何插入子表?
- 个性定制礼品将取代原有礼品市场成主流
- Creo Simulat 4.0有限元分析视频教程 料材 结构 网格 装配 散热分析
- MySQL万字总结!超详细!