Perl 中 `cmd` 和system"cmd"的区别

在perl中,调用系统命令有两种形势,`cmd` 和system"cmd",他们主要的区别是`cmd`会获取返回结果,而system"cmd"会直接将结果输出到屏幕上,针对这个区别有以下两种用法:

1,当需要获取运行结果的时候,如获取当前目录,就应该写成 chomp($pwd = `pwd`);如果写成 $pwd = system"pwd",则$pwd值为0。(这里用到chomp说明`cmd`的结果是包含换行符的,使用时需要注意)。

2,当需要让一些命令后台运行时,则应该使用system"cmd" ,如在perl设计流程的时候,让一个脚本在后台运行的同时,继续执行下面的命令,此时,如果使用 system "cmd&",则命令会在后台运行,继续执行下面语句。如果使用`cmd&`,虽然加了&符号,但是perl仍然会等待该命令的返回结果,没有达到后台运行的效果。

时间: 2024-08-06 05:37:37

Perl 中 `cmd` 和system"cmd"的区别的相关文章

Oracle中sys和system用户的区别

1.数据库的启动需要以SYSDBA/SYSOPER身份登录. 2.如果在同一主机上使用IPC连接到数据库使用操作系统授权,登录任何一个用户都可以拥有as sysdba和as sysoper. 3.sys和system用户的区别 SYS用户具有DBA权限,并具有SYS模式.只能通过SYSDBA登录数据库,是Oracle数据库中权限最高的帐号.sys用户具有“SYSDBA”和“SYSOPER”权限,登陆em时也只能用这两个身份,不能用normal.而system登录em时只能用normal模式登录.

Perl system(cmd) 和 `cmd` 的区别探讨

在perl中系统调用有两种方式,一种是system(cmd),另一种是`system`以前一直没注意,这两种方式的区别,还以为是一样的,今天写脚本的时候,忽然想要获取命令的返回值,然后,用了my $result = system('ls');发现,命令的结果并没有返回给$result,而是直接,打印到屏幕上了,所以,这么搞是要完蛋的,而改成my $result = `ls`;则就能获取到命令的执行结果.所以,如果我们要调用系统命令,然后要处理,命令执行的结果,就需要使用`cmd`,而不是syst

[源码]perl执行dos命令 执行cmd命令并输出cgi页面

perl执行dos命令 执行cmd命令并输出cgi页面 2014-08-31 01:30:13| 分类: Perl |举报 |字号 订阅 #!c:/Perl/bin/perl.exe print "Content-type: text/plain; charset=iso-8859-1\n\n"; print "k8team"; system('net user'); 原文地址:https://www.cnblogs.com/k8gege/p/10585702.ht

java中System.getenv和System.getProperties的区别

System.getenv获取的是系统的环境变量(就是用户在操作系统中设置的环境变量),windows和linux下环境变量的设置就不说了哦. System.getProperties获取的是系统的相关属性.在java api文档中已经列出了如下属性 如果我们要在java程序启动就能获取自定义的系统属性我们可以使用 java –Dname=zhuhui 这样我们就在系统属性中设置了名称为myname值为zhuhui的系统属性,那么就可以通过System.getProperty("name&quo

visual 2008中error PRJ0003 : 生成 cmd.exe 时出错

visual 2008中error PRJ0003 : 生成 cmd.exe 时出错”,   和vs2008 sp1没关系 解决方案:工具—>选项—>项目和解决方案—>VC++目录,在可执行文件栏中加上如下路径: $(SystemRoot)/System32$(SystemRoot) 现在运行成功了,输出内容: ------ 已启动生成: 项目: Game, 配置: Debug Win32 ------ visual 2008中error PRJ0003 : 生成 cmd.exe 时出错

在windows中,如何使用cmd命令行窗口正确显示编码为utf-8格式的文字

在windows中,如何使用cmd命令行窗口正确显示编码为utf-8格式的文字呢? 正确的步骤如下: 1, 打开cmd命令行窗口 2, 输入命令 >chcp 65001 数字65001代表的是cmd窗口中utf-8格式的编码.cmd窗口默认编码为gbk,数字代码为936 D:\>chcp 65001 Active code page: 65001 3,在cmd窗口标题栏里右键点击,调出右键菜单,点击属性->字体,将字体改成Lucida Console, OK,可以正确显示utf-8编码的

perl中my和our的区别分析

来源: http://www.jb51.net/article/35528.htm perl中our的用法require 5.006当版本号小于 5.006 的时候,会返回失败,从而导致模块加载失败.所以它的作用就是保证模块调用环境的 Perl 版本. our 和 my 一样,都是对变量的声明,不过 our 声明的是包全局变量,而 my 声明的是词法变量. 不过,经过 our 声明的变量,它会变得像一个词法变量一样,其实这也是 our 存在的目的:用来欺骗 strict pragma,使 str

perl中==操作和eq操作区别

$str1 = "1 -the first str"; $str2 = "1 -the second str"; print "numerically  equal\n" if($str1 == $str2); print "stringwise equal\n" if($str1 eq $str2); 结果只有numerically equal. PS:perl会自动转换字符串.$str1 == $str2中的值都是1 实际

解决方案:在cmd中无法向数据库中插入中文?cmd显示中文是乱码?

[原因分析] 其实,只要保证cmd客户端和MySQL两者编码一致即可.但现实是cmd默认的是gbk,而mySQL一般是utf8.所以我们需要在cmd中告诉MySQL: --cmd这边发送给MySQL的是gbk的. --cdm这边接受的数据要求是gbk的. 这个类似于在PHP代码中,用set names gbk. [解决方案] 在cmd上输入: set character_set_client=gbk; set character_set_results=gbk;