小编ser*_*sat的帖子

如何在Perl中存储数组或散列中的重复值?

让我们这很容易.我想要的是:

@array = qw/one two one/;
my @duplicates = duplicate(@array);
print "@duplicates"; # This should now print 'one'.
Run Code Online (Sandbox Code Playgroud)

如何打印数组/哈希的重复值?

arrays perl hash duplicates

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

删除具有多个搜索模式的perl行

我试图找到一种方法来使用perl来删除包含以下内容的行:

errors:
mirror
raid*
pond
Run Code Online (Sandbox Code Playgroud)

我找到了:

perl -pi -e "s,errors:,,"
Run Code Online (Sandbox Code Playgroud)

有没有办法在一个命令中指定我正在寻找的所有模式?

bash perl solaris

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

使用perl删除文件的最后一行

sed '$d' $file; 
Run Code Online (Sandbox Code Playgroud)

使用此命令似乎不起作用,因为$Perl中的保留符号.

unix perl

-2
推荐指数
2
解决办法
2395
查看次数

perl错误:在连接(.)或字符串中使用未初始化的值$ _

我收到以下错误:

Use of uninitialized value $_ in concatenation (.) or string at checkfornewfiles.pl line 34.
Run Code Online (Sandbox Code Playgroud)

尝试运行以下代码时:

#!/usr/bin/perl -w
#Author: mimo
#Date 3/2015
#Purpose: monitor directory for new files...

AscertainStatus();
        ######### start of subroutine ########
sub AscertainStatus {
    my $DIR= "test2";

    ####### open handler #############
    opendir (HAN1, "$DIR") || die "Problem: $!";

    ########## assign theoutput of HAN1 to array1 ##########
    my @array1= readdir(HAN1);

    ######## adding some logic #########

    if ("$#array1" > 1) {   #### if files exists (more than 1) in …
Run Code Online (Sandbox Code Playgroud)

perl

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

Perl删除字符串中间的子字符串

如何删除(或替换为空格)我的字符串的第4个和第5个字符,在本例中为数字5和数字6,从而得出:

123456789
Run Code Online (Sandbox Code Playgroud)

对此:

1234789
Run Code Online (Sandbox Code Playgroud)

perl replace

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

"(\ S +)\.|"之间的区别 和"(\ S +)|" 在Perl

我不知道(\S+) |和之间的区别(\S+)\.|是什么.

regex perl

-6
推荐指数
1
解决办法
6804
查看次数

为什么不在perl中使用awk?

可能这个问题多次被问到能否在你的perl脚本中加入awk one liner.但是这些问题对于以下问题过于具体:

  1. 提供了一种不同的方法作为建议或
  2. 现有代码中的语法已被纠正OR
  3. 大多数时候 - >解决方案是使用perl提供的,因为专家喜欢使用awk或perl,因为他们都做同样的工作.是.也许.但我认为awk是针对特定问题而设计的,这些问题可以在awk中比perl更好地解决.

示例:我有输出,ls -lart第9列是文件名.我很容易在awk中做到这一点ls -lart|awk '{print $9}'.同样的事情当然可以使用perl来完成readdir().但是在perl中提取第8列或第7列并不容易?如果我必须提取数据管道将其管道输送到sed等,情况会变得更糟.

另一个例子: 我有一个特定的DIR,它有许多格式的文件,如:

ABC_9090_DEF_10-22-30_13-07-2014.temp
Run Code Online (Sandbox Code Playgroud)

注意date_time.temp标记部分.这里的格式是ABC_4digits_DEF_hours-minutes-seconds_day-month-year

我想只看到刚刚创建的新文件(比如说从现在起5分钟之前).使用awk/sed的方法是(伪代码,让我知道你是否需要我复制实际的一个班轮):

  1. ls -lart|awk '{print $9}'|
  2. egrep 提取10-22-30_13-07-2014
  3. 使用sed替换_ with - | awk重新排列以具有YEARMONTHDAYHOURSMINUTESSECONDS格式的数字.
  4. 使用awk再次比较这个数字使用if($ 1> $ mynum)对变量(假设有一个相同格式的数字代表TODAYS TIME - 5分钟)

问题: 但由于某种原因(其他复杂性)我想在perl中编写它并且我发现当使用系统命令在perl中使用它时,if条件if($ 1> $ mynum)会抛出错误.它说使用'>'语法错误,即使使用单引号,双引号,没有引号.

有人可以告诉我一般情况:

  1. 如果给出选择,为什么有人不会在这种情况下使用awk,sed而不是perl?
  2. 在perl中包含awk或sed时应该记住的事情的一般解释不是特定于这个问题(希望也应该解决这个特定的问题).

regex perl awk sed

-9
推荐指数
1
解决办法
248
查看次数

标签 统计

perl ×7

regex ×2

arrays ×1

awk ×1

bash ×1

duplicates ×1

hash ×1

replace ×1

sed ×1

solaris ×1

unix ×1