如何从变量';Perl中的值是多少?

如何从变量';Perl中的值是多少?,perl,Perl,假设我有一个变量,它被分配了一个包含$字符的字符串。例如: $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 首先,请注意,不能使用双引号像这样分配给$a,因为$192将被插值,几乎肯定会失败 你应该始终使用严格和使用

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

$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 

首先,请注意,不能使用双引号像这样分配给
$a
,因为
$192
将被插值,几乎肯定会失败

你应该始终使用
严格
使用警告
在任何Perl代码中。如果你真的尝试了这个任务,它会产生一个警告

因此,如果您的赋值是显式的,请改用单引号:

my $a = '$192.168.1.1';
然后,如果
$
始终存在,只需使用
substr
——这将比使用正则表达式快得多

$a = substr($a, 1);
如果您不确定
$
是否存在,则如果将上面使用的行应用于正确的变量,则该行确实有效:

$a =~ s/\$//;
或者:

$a =~ tr/$//d;

这是半工作和工作代码

半工作 工作 始终使用
严格使用
使用警告学习Perl时(前二十年左右是最难的)


如果您的代码不能正常工作,则需要显示等效的SSCCE()代码和示例输出,但它应该明确包括
use strict
使用警告

字符串“不工作”不是Perl中内置的错误消息。错误在于您忘记了
使用严格的
使用警告
,这会确切地告诉您错误所在。这就是您如何分配
$a
,您应该执行
$a=“$192.168.1.1”;打印$a$a
$b
。Perl在排序中使用这些。尽管它们的使用对Perl来说无关紧要,但可能会让您感到困惑。最好使用更有意义的名称。不适合我不想使用substr@smartboy:如果您不想使用
substr
,请说出来!适合我,为什么不使用正确的功能来完成工作?顺便说一句,你的否决票?你的
s//
y///
是不相等的。那种代码毫无意义。读一下乔纳森和我写的东西,给自己买一本好书。或者更好一些。如果他发布了实际编译的代码,这可能会有所帮助。@tchrist:同意-SSCCE的概念非常有价值,特别是在Perl中,只有很少几行(我的代码中有7行,这几乎是最小的)可以完成这项工作。
$ 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
$