-11

假设我有一个变量,它分配了一些包含$字符的字符串。例如:

$a="$192.168.1.1";

我必须$使用 Perl 删除字符。文本被隐式分配给变量。

怎么做?

$v =~ s/\$//;  # this does not work for me :(




$="$192.168.1.1"
$ips =~ substr$ips ,1);
 push (@planets,  $ips 
4

2 回答 2

7

首先,请注意,您不能使用双引号来分配$a这样的值,因为$192会被插值并且几乎肯定会失败。

您应该始终任何Perl 代码中使用use strict;和。如果您确实尝试了该分配,它会产生警告。use warnings;

因此,如果您的分配是明确的,请改用单引号:

my $a = '$192.168.1.1';

然后,如果$始终存在,只需使用- 它substr比使用正则表达式快得多。

$a = substr($a, 1);

如果您不确定是否$会存在,那么您上面使用的行确实有效,如果您将其应用于正确的变量:

$a =~ s/\$//;

或者:

$a =~ tr/$//d;
于 2013-07-14T18:47:47.570 回答
4

这是半工作和工作代码。

半工作

$ cat x1.pl | so
#!/usr/bin/env perl
use strict;
use warnings;

my $a = "$192.168.1.1";
print "$a\n";
$a =~ s/\$//;
print "$a\n";

$ perl x1.pl | so
Use of uninitialized value $192 in concatenation (.) or string at x1.pl line 5.
.168.1.1
.168.1.1
$

在职的

$ cat x2.pl | so
#!/usr/bin/env perl
use strict;
use warnings;

my $a = '$192.168.1.1';
print "$a\n";
$a =~ s/\$//;
print "$a\n";

$ perl x2.pl | so
$192.168.1.1
192.168.1.1
$ 

在学习 Perl 时始终使用use strict;and use warnings;(前二十年左右是最难的)。

如果您的代码仍然无法正常工作,则需要显示等效的 SSCCE(短、自包含、正确示例)代码和示例输出,但它绝对应该包含use strict;use warnings;

于 2013-07-14T19:02:38.760 回答