相关疑难解决方法(0)

Perl中系统和反引号和管道之间的区别是什么?

Perl支持运行外部程序的三种方式(我知道):

system:

   system PROGRAM LIST
Run Code Online (Sandbox Code Playgroud)

如:

system "abc";
Run Code Online (Sandbox Code Playgroud)

反引号如:

`abc`;
Run Code Online (Sandbox Code Playgroud)

通过管道运行它,如:

open ABC, "abc|";
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别?这就是我所知道的:

  1. 您可以使用反引号和管道轻松获取命令的输出.
  2. 就是这样(在未来的编辑中更多?)

perl system pipe backticks

27
推荐指数
1
解决办法
7656
查看次数

捕获Perl系统的输出()

我需要在Perl中使用system()运行shell命令.例如,

system('ls')

系统调用将打印到STDOUT,但我想将输出捕获到变量中,以便我可以使用Perl代码进行将来的处理.

shell perl

26
推荐指数
3
解决办法
7万
查看次数

Perl中的系统,exec和反引号有什么区别?

在Perl中,从我的脚本运行另一个Perl脚本,或运行像任何系统命令mv,cp,pkgadd,pkgrm,pkginfo,rpm等,我们可以使用以下命令:

  • system()
  • exec()
  • `` (反引号)

三者都是一样的,还是不一样?在这种情况下,三者都能得到相同的结果吗?它们是否用于不同的场景,比如调用我们必须使用的Perl程序以及我们必须使用system()的其他程序``(反引号).

请告知,因为我目前正在使用system()所有电话.

perl ipc

7
推荐指数
2
解决办法
2万
查看次数

从perl脚本调用bash脚本

我正在尝试perl脚本中的代码,需要在bash中调用另一个文件.不确定,这是最好的方法吗?我可以使用system()直接调用它吗?请指导/给我一个示例方式.

从我到目前为止所尝试的:

     #!/usr/bin/perl
     system("bash bashscript.sh");
Run Code Online (Sandbox Code Playgroud)

Bash:

#!/bin/bash
echo "cdto codespace ..."
cd codetest
rm -rf cts
for sufix in a o exe ; do
echo ${sufix}
find . -depth -type f -name "*.${sufix}" -exec rm -f {} \;
done
Run Code Online (Sandbox Code Playgroud)

我执行perl脚本时出错:没有这样的文件或目录代码测试

意外令牌附近的语法错误`do

bash perl

6
推荐指数
2
解决办法
4万
查看次数

如何获取未修改的命令行参数以"换行"另一个命令行工具?

我想编写一个脚本foo这只是调用bar它被称为用,使用bash或Perl完全相同的参数.

现在,在perl中执行此操作的简单方法是

#!/bin/perl

my $args=join(' ', @ARGV);
`bar $args`;
Run Code Online (Sandbox Code Playgroud)

但是,ARGV中的值已经由shell处理,因此如果我打电话

 foo "I wonder, \"does this work\""
Run Code Online (Sandbox Code Playgroud)

酒吧会被这样打电话

 bar I wonder "does this work"
Run Code Online (Sandbox Code Playgroud)

如何获取原始命令行,以便我可以简单地逐字传递它?

bash perl command-line

5
推荐指数
1
解决办法
728
查看次数

如何使用Perl创建符号链接?

我试图在Perl中运行以下代码:

symlink($oldname,$newname) or die print "$!\n";
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误说:

The symlink function is unimplemented at C:\...\CreateSymlink.pl line 14.
Run Code Online (Sandbox Code Playgroud)

如果我将代码更改为:

link($oldname,$newname) or die print "$!\n";
Run Code Online (Sandbox Code Playgroud)

然后正在创建没有错误的硬链接.

使用Activestate Perl和Windows 7 32位.

任何想法为什么会这样?我正在尝试为文件创建符号链接.

PS:我是Perl的新手.

perl symlink

4
推荐指数
1
解决办法
1万
查看次数

如何从perl调用gnuplot脚本

我有一个gnu.gp文件:

# grphist.conf
set terminal canvas
#Terminal type set to 'canvas'
#Options are ' solid butt size 600,400 fsize 10 lw 1 fontscale 1 standalone'
set output 'output.html'  

set grid
set xtic rotate by 90
set style data histograms
set style fill solid 1.00 border -1
#$ cat grphist.conf | gnuplot
plot "c_time"  using 2:xtic(1) title "time to number of UIDs"
Run Code Online (Sandbox Code Playgroud)

但是,我必须将它与perl脚本集成.

perl gnuplot

3
推荐指数
1
解决办法
5906
查看次数

反叛与本地的PERL做事方式

考虑这两个片段:

#!/bin/bash/perl
open(DATA,"<input.txt");
while(<DATA>)
{
  print($_) ;
}
Run Code Online (Sandbox Code Playgroud)

$abcd = `cat input.txt`;
print $abcd;
Run Code Online (Sandbox Code Playgroud)

两者都将print文件的内容input.txt作为输出

问题:对于哪一个(反引号本地方法)应优先于另一个,在任何特定情况下或两者都相等,是否有任何标准?

原因,我问这个是因为我发现cat法比更容易open荷兰国际集团在本地的perl方法的文件,因此,这使我怀疑,如果我能实现通过反引号个什么东西,我该用它去或喜欢的其他本地方法这样做 !!

我也检查过这个帖子:Perl的反引号,系统和exec有什么区别?但它的路线与我的怀疑不同!!

bash perl

2
推荐指数
1
解决办法
143
查看次数

从perl脚本运行bsub命令

我试图通过以下方式从perl脚本运行bsub命令:

system ("bsub -select "testid::1" -q normal");
Run Code Online (Sandbox Code Playgroud)

但我认为perl因为双引号而变得混乱"testid::1".实现这个的正确方法是什么?

shell perl lsf

1
推荐指数
1
解决办法
766
查看次数

在我的perl脚本中运行非perl脚本?

我正在编写一个Perl脚本来自动化一些软件安装.

在我的脚本中,我运行另一个bash脚本并获取其输出并再次打印它.

print `/home/me/build.sh`;
Run Code Online (Sandbox Code Playgroud)

但build.sh脚本需要8分钟,所以我的脚本等到8分钟,脚本完成打印输出的开始.

如何在build.sh程序中打印每一行,因为它在bash shell中运行?

正如下面的评论我使用 system ("/home/me/build.sh");

但输出转到shell但是我在我的脚本中重定向到我的日志文件,

open $fh, "> filename";
*STDOUT = $fh;
*STDERR = $fh;
Run Code Online (Sandbox Code Playgroud)

那么当我使用系统功能时,它的输出将被重定向到文件名,但事实并非如此.

我应该用print system ("/home/me/build.sh");而不是system ("/home/me/build.sh");吗?

#

完整代码:

#!/usr/bin/perl

use strict;
use warnings;

use IO::File;

my %DELIVERIES = ();
my $APP_PATH = $ENV{HOME};
my $LOG_DIR = "$APP_PATH/logs";
my ($PRG_NAME) = $0 =~ /^[\/.].*\/([a-zA-Z]*.*)/;

main(@argv);

sub main
{
        my @comps = components_name();
        my $comp;
        my $pid;

        while ( scalar @comps ) {
                $comp = pop @comps;
                if …
Run Code Online (Sandbox Code Playgroud)

perl

0
推荐指数
1
解决办法
166
查看次数

Perl Split不会拆分为Array

我有一个文件,我必须通过块(基于时间戳)读取块.所以我使用awk在两个时间间隔之间读取,然后我必须进一步处理数据.为此,我必须阅读我从awk Line By Line收到的字符串.当我使用新字符执行拆分时,它不会拆分,但只有所有字符串都保留在第一个字段中.我使用了不同的转义字符但没有任何成功.

我的主要目的是逐行读取字符串.

    $cmd = "awk '\$0>=from&&\$0<=to' from=\"$currentTime\" to=\"$nextTime\" Output.txt";
    $dataChunk = system ($cmd);
    my @lines = split /[\r\s\v\V\n]+/, $dataChunk;
    foreach my $line (@lines) {
        chomp;
        $timeStamp1 = (split /-/, $line)[1];
        print "\n$timeStamp1\n";
        exit;
    }
Run Code Online (Sandbox Code Playgroud)

string perl split

0
推荐指数
1
解决办法
98
查看次数

Perl触摸目录

我是perl.Below的新手,是使用perl触摸目录的代码

#!/usr/bin/perl

# Populate the hashMap
# keys          -->  directories to clean
# attributes    -->  days to keep.



print "<-------------------------------------------------------->";
print " Touching of folders Started   ";
touch `/tmp/dir1`;
touch `/tmp/dir2`;
print " Touching of folders Ended   ";
print "<-------------------------------------------------------->";
Run Code Online (Sandbox Code Playgroud)

运行脚本时出现以下语法错误.请帮忙.

$ ./FeedServerHscript.sh
Backticks found where operator expected at /tmp/eCAS_Housekeep/Ecas_54.pl line 11, near "touch `/tmp/dir1`"
        (Do you need to predeclare touch?)
Backticks found where operator expected at /tmp/eCAS_Housekeep/Ecas_54.pl line 12, near "touch `/tmp/dir2`"
        (Do you need to predeclare touch?)
syntax …
Run Code Online (Sandbox Code Playgroud)

perl

0
推荐指数
1
解决办法
478
查看次数

标签 统计

perl ×12

bash ×3

shell ×2

backticks ×1

command-line ×1

gnuplot ×1

ipc ×1

lsf ×1

pipe ×1

split ×1

string ×1

symlink ×1

system ×1