如何从变量';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如果是这样的话,是因为你不会得到你想要的。你已经编辑了你的问题,添加了一些类似于行噪声的东西,甚至比Perl中常见的还要多。这段代码不可能编译。你似乎没有注意到两个答案中的任何一个。请发布完整的10行编译运行代码(越短越好),以及从中获得的输出。不应使用变量$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
$