簡體   English   中英

Perl:刪除某些字符。

[英]Perl: Removing characters up to certain point.

我嘗試搜索已經提出的問題,但似乎找不到任何東西。 我敢肯定它的操作非常簡單,但是我對Perl完全陌生。

我想做的是刪除字符串中的某個字符,直到某一點為止。 例如,我有:

參數1:0xFFFF

而我想做的就是刪除“ Parameter1:”,只剩下“ 0xFFFF”。 如果有人可以幫助您並簡單說明所使用的運算符,那就太好了。

聽起來您需要substr函數。

  #!/usr/bin/perl
  use strict;
  use warnings;

  my $string = 'Parameter1 : 0xFFFF';
  my $fragment =  substr $string, 12;
  print "  string: <$string>\n";
  print "fragment: <$fragment>\n";
s/.*:\s*//;

要么

$s =~ s/.*:\s*//;

這會刪除直到:包括:第一次出現的所有內容,然后刪除零個或多個空格字符。 $s =~應用於$s ; 沒有它,它將應用於$_

您是否考慮過使用Config :: Std之類的東西?

以下是手動解析此類配置文件的方法:

#!/usr/bin/perl

use strict; use warnings;

my %params;

while ( my $line = <DATA> ) {
    if ($line =~ m{
            ^
            (?<param> Parameter[0-9]+)
            \s*? : \s*?
            (?<value> 0x[[:xdigit:]]+)
        }x ) {
        $params{ $+{param} } = $+{value};
    }
}

use YAML;
print Dump \%params;

__DATA__
Parameter1 : 0xFFFF
Parameter3 : 0xFAFF
Parameter4 : 0xCAFE

使用Config::Std

#!/usr/bin/perl

use strict; use warnings;
use Config::Std;

my $config = do { local $/; <DATA> };

read_config \$config, my %params;

use YAML;
print Dump \%params;

__DATA__
Parameter1 : 0xFFFF
Parameter3 : 0xFAFF
Parameter4 : 0xCAFE

當然,在現實生活中,您會將文件名傳遞給read_config而不是對其進行read_config

我喜歡拆分這些參數/值對。

my $str = "Parameter1 : 0xFFFF";
my ($param, $value) = split /\s*:\s*/, $str, 2;

請注意,在拆分中使用了LIMIT,這將拆分限制為兩個字段(如果值中包含其他冒號)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM