小编kur*_*uki的帖子

正则表达式匹配任何字符,包括新行

是否有正则表达式匹配"包括换行符在内的所有字符"?

例如,在下面的正则表达式中,没有输出,$2因为(.+?)匹配时不包括新行.

$string = "START Curabitur mollis, dolor ut rutrum consequat, arcu nisl ultrices diam, adipiscing aliquam ipsum metus id velit. Aenean vestibulum gravida felis, quis bibendum nisl euismod ut. 

Nunc at orci sed quam pharetra congue. Nulla a justo vitae diam eleifend dictum. Maecenas egestas ipsum elementum dui sollicitudin tempus. Donec bibendum cursus nisi, vitae convallis ante ornare a. Curabitur libero lorem, semper sit amet cursus at, cursus id purus. Cras varius metus eu diam …
Run Code Online (Sandbox Code Playgroud)

regex perl

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

按值进行简单哈希搜索

我有一个简单的哈希,并希望根据$ value条件返回$ key.也就是说,对于第14行,我需要返回$ key为"黄色"的$ key的代码?

1  #!/usr/bin/perl
2
3  # This program creates a hash then
4  # prints out what is in the hash
5
6  %fruit = (
7   'apple' => ['red','green'],
8   'kiwi' => 'green',
9   'banana' => 'yellow',
10  );
11
12 print "The apple is @{$fruit{apple}}.\n";
13 print "The kiwi is $fruit{kiwi}.\n";
14 print "What is yellow? ";
Run Code Online (Sandbox Code Playgroud)

perl hash search grep

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

在模式匹配中使用未初始化的值(m //)

即使我已经声明了我的正则表达式变量,我也会收到此错误.

my $pattern = '(Cat\.\sNo\.\s\d+)';

后来在我的代码中我使用了$pattern.

if ($page =~ /$pattern/)
{
  push(@array, $element);
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的代码时它会给我以下错误,并继续成功运行:

Use of uninitialized value in pattern match (m//)
Run Code Online (Sandbox Code Playgroud)

在Google上搜索此错误似乎指向变量尚未初始化的情况,尽管在我的情况下,我似乎已经初始化了它?

perl

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

存储正则表达式导致新变量

以下程序是重新排列字符串.对于第8行,我试图将正则表达式的结果存储到新变量$ newdate中,但是当第9行打印$ newdate时,它只显示1.如何更改我的代码以便$ newdate将存储正则表达式操作的$ date值?

1 #!/usr/bin/perl
2 
3 # This program changes the date format from mm/dd/yyyy to yyyy,mm,dd
4 
5 $date = '21/11/2011';
6 print "Current: $date\n";
7
8 $newdate = $date =~ s/(..)\/(..)\/(....)/$3,$2,$1/;
9 print "New: $newdate\n";
Run Code Online (Sandbox Code Playgroud)

regex perl

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

正则表达式中的空格字符无法识别

我正在编写一个简单的程序 - 请参阅下面的代码和评论.有谁知道为什么第10行不识别空格字符?当我运行代码时,它会找到::但不会用空格替换它.

1  #!/usr/bin/perl
2
3  # This program replaces :: with a space
4  # but ignores a single :
5
6  $string = 'this::is::a:string';
7
8  print "Current: $string\n";
9 
10 $string =~ s/::/\s/g;
11 print "New: $string\n";
Run Code Online (Sandbox Code Playgroud)

regex perl

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

跨多列排序(Perl)

我将如何针对以下代码对多列进行排序?

目前,代码:
1.获取a中的一个@list文件$directory
.使用正则表达式获取$fileName,$fileLocation$fileSize使用3中的每个元素@list
.将(2)中的3个值打印成3个固定宽度列4.然后打印出总数文件数和目录大小

我希望输出显示排序依据:
1.$fileName然后
2. $fileLocation然后
3.$fileSize

$directory = '/shared/tmp';
$count = 0;

@list = qx{du -ahc $directory};

printf ("%-60s %-140s %-5s\n", "Filename", "Location", "Size");

foreach(@list) {
  chop($_);                                                     # remove newline at end
  if (/^(.+?K)\s+(.+\/)(.+\.[A-Za-z0-9]{2,4})$/) {              # store lines with valid filename into new array
#    push(@files,$1);
    $fileSize = $1;
    $fileLocation = $2;
    $fileName = $3;
    if ($fileName =~ /^\./) {
      next; } …
Run Code Online (Sandbox Code Playgroud)

sorting perl

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

带感叹号的Perl正则表达式

你如何定义/解释这个Perl正则表达式:

$para =~ s!//!/!g;
Run Code Online (Sandbox Code Playgroud)

我知道s手段搜索,并且g意味着全局(搜索),但不确定感叹号!和额外斜线如何/适合(因为我认为图案看起来更像s/abc/def/g).

regex perl

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

"{}"(大括号)如何创建哈希,为什么我可以将其存储为标量?

perltoot中是这个代码:

$rec = {
  name  => "Jason",
  age   => 23,
  peers => [ "Norbert", "Rhys", "Phineas"],
};
Run Code Online (Sandbox Code Playgroud)

这是一个字符串还是某种哈希(我认为哈希是用声明的%)?

perl hash

3
推荐指数
2
解决办法
166
查看次数

检查文件是否存在(Perl)

您将如何编写perl脚本来检查文件是否存在?

例如,如果我想检查$ location中是否存在$ file.

目前我正在使用一个冗长的子程序(见下文),我确信有一个更简单的方法吗?

# This subroutine checks to see whether a file exists in /home
sub exists_file {
  @list = qx{ls /home};
  foreach(@list) {
  chop($_);
  if ($_ eq $file) {
    return 1;
  }
}
Run Code Online (Sandbox Code Playgroud)

perl

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

while循环带有"OR"条件

下面是一个代码片段,询问用户输入,如果输入不是"csv"或"newline",则调用while循环.

对于第5行,while循环尝试匹配$format"csv"或"newline" 的正确语法是什么?目前它似乎只匹配"csv".

1 # Request output format
2 print "Format of email addresses required (csv|newline): ";
3 $format = <>;
4 chop($format);
5 while ($format ne ("csv"||"newline")) {
6   print "Invalid format. Enter in csv or newline: ";
7   $format = <>;
8   chop($format);
9 }
Run Code Online (Sandbox Code Playgroud)

perl

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

从脚本向终端发送命令

如何在perl脚本中向终端发送命令?

例如,如果我想mkdir $directory在控制台中运行该命令,我在perl脚本中输入什么?

perl

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

取消引用HTML :: Element哈希引用

我正在遍历一个存储了一些值的数组HTML::TreeBuilder,其中使用了a look_down().当我print $value,我得到下面,我想取消引用.

HTML::Element=HASH(0xe687f4)
Run Code Online (Sandbox Code Playgroud)

执行打印\$value似乎返回一个通用引用:

REF(0xe6ea84)
Run Code Online (Sandbox Code Playgroud)

我需要取消引用HTML :: Element哈希引用的符号是什么?

注意:使用$$value返回错误Not a SCALAR reference

编辑:通过评论感谢cjm找到解决方案.我需要打印$value->as_HTML

perl dereference

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

IF语句的意外结果:"string"<= 72是真的吗?

在下面的代码中,当我在输入处输入一些非数字字母(即.$temp)时,它会响应"太冷!" 而不是"无效".我错过了什么?

#!/usr/bin/perl

print "What is the temperature outside? ";
$temp=<>;
if ($temp > 72) {
  print "Too hot!\n"; }
elsif ($temp <= 72) {
  print "Too cold!\n"; }
else {
  print "Temperature $temp is invalid.\n"; }
Run Code Online (Sandbox Code Playgroud)

perl

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

标签 统计

perl ×13

regex ×4

hash ×2

dereference ×1

grep ×1

search ×1

sorting ×1