Git   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何让Perl理解导航到path中带有空格的目录?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我想导航到一个目录,我有我的function存储,我需要在我的脚本中使用的结果生成。 但是我被困住了,因为Perl无法理解我的函数位置语法(用空格)。

这是我的代码

$path ="D:\AVI MEHENWAL\PERL\SCRIPTS\PROjeCTS\Snmpcheck"; $snmpwalk = `$path\SnmpWalk.exe -q -t:60 -r:$ip -v:2c -c:$comm -os:1.3.6.1.2.1.1 -op:1.3.6.1.2.1.1.9`; print "$snmpwalk";

其中SnmpWalk是我的函数位于path中的variables$path。

Perl在运行时返回以下错误

在远程Windows计算机上使用python运行命令

直观地debuggingGTK3应用程序(GtkInspector / gtkparasite)

PDB文件不加载

如何在崩溃时为我的进程创buildminidump?

我在哪里可以得到Windows检查构build?

D:AVI MEHENWALPERLSCRIPTSPROjeCTSSnmpcheck>perl perl_snmpwalk_v2.0.pl 'D:AVI' is not recognized as an internal or external command,operable program or batch file.

我该如何解决这个问题?

控制台中的铃声挂起Windows 7

程序卡在等待()

在Linux上可以使用BACktrace()来替代静态函数的符号

无法启动Windows 7(32位)与bcdedit /debugging选项

使用IDebugControl :: Disassemble来查看子例程的指令

在Perl中,可以使用q{String}来代替'String' (助记符单引号 )和qq{String}而不是"String" (助记符双引号 )。 双引号评估变量和反斜杠,而单引号则没有。 另外,可以使用qx{CR_246_11845@D}来代替`cmd`的反引号(助记符和执行 )。

使用这些结构可以更容易地在像你这样的情况下转义字符串:

@H_954_0@my $snmpwalk = q{"D:AVI MEHENWALPERLSCRIPTSPROjeCTSSnmpchecksnmpwalk"}; my $result = qx{$snmpwalk -q -t:60 -r:$ip -v:2c -c:$comm -os:1.3.6.1.2.1.1 -op:1.3.6.1.2.1.1.9}; print $result;

另外请注意,即使在Windows下,也可以在路径中使用正斜杠( / )。 只要您使用完整路径来执行,它就可以正常工作。

明智地使用正确的引号,这可以整理很多。 除非单引号中的反斜杠是字符串中的最后一个字符,否则单引号内的反斜杠不需要转义,如果双引号也用作字符串分隔符,则只需转义双引号即可。 打印时,将$snmpwalk放在引号中也是(几乎可以肯定)是错误的。

@H_954_0@my $path = 'D:AVI MEHENWALPERLSCRIPTSPROjeCTSSnmpcheck'; my $snmpwalk = `"$path\SnmpWalk.exe" -q -t:60 -r:$ip -v:2c -c:$comm -os:1.3.6.1.2.1.1 -op:1.3.6.1.2.1.1.9`; print $snmpwalk;

在Linux / OS X上,使用转义空格。 在Windows上,使用引号围绕路径。

Linux / OS X:

$escapedPath ="D:\AVI MEHENWAL\PERL\SCRIPTS\PROjeCTS\Snmpcheck";

视窗:

$escapedPath =""D:\AVI MEHENWAL\PERL\SCRIPTS\PROjeCTS\Snmpcheck"";

也看这里 。

不是Perl不理解你的路径,而是cmd (Windows sHell)。 我认为通过在你的路径上添加一些引号就可以解决这个问题。 尝试以下不那么优雅的破解:

$executable =""D:\AVI MEHENWAL\PERL\SCRIPTS\PROjeCTS\Snmpcheck\SnmpWalk.exe""; $snmpwalk = `$executable -q -t:60 -r:$ip -v:2c -c:$comm -os:1.3.6.1.2.1.1 -op:1.3.6.1.2.1.1.9`; print "$snmpwalk";

我用它来检查在Cygwin上运行的Perl内的.jar文件内容

#!/bin/perl $file = q{"C:cygwinhomelylezHadoophadoop-2.xhadoop-2.2.0sharehadoopyarnhadoop-yarn-api-2.2.0.jar"}; $path = '/cygdrive/c/Program Files/Java/jdk1.7.0_45/bin'; @result = qx{"$path\jar" -tf $file 2>&1}; for my $result ( @result ) { chomp $result; print $result,"n"; }

大佬总结

以上是大佬教程为你收集整理的如何让Perl理解导航到path中带有空格的目录?全部内容,希望文章能够帮你解决如何让Perl理解导航到path中带有空格的目录?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: