作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这段代码:
#!/usr/bin/perl -w
use strict;
use Scalar::Util qw(looks_like_number);
sub what_the_fudge {
my $string = "foo 123 bar";
if ($string =~ /foo (.+) bar/) {
if (looks_like_number($1)) {
print "$1 looks like a number\n";
} else {
print "$1 doesnt look like a number\n";
}
}
}
&what_the_fudge;
&what_the_fudge;
&what_the_fudge;
123 doesnt look like a number
123 looks like a number
123 looks like a number
perl -e 'use Scalar::Util; print "$Scalar::Util::VERSION\n"'
--> 1.19
perl -v
--> 这是 perl,v5.10.0 为 darwin-thread-multi-2level 构建(有 2 个注册补丁,更多细节见 perl -V)
最佳答案
我对你的程序做了一些修改:
#! /usr/bin/env perl
#
use strict;
use warnings;
use Scalar::Util qw(looks_like_number);
print "Scalar version: $Scalar::Util::VERSION\n";
what_the_fudge();
what_the_fudge();
what_the_fudge();
sub what_the_fudge {
my $string = "foo 123 bar";
if ($string =~ /foo (.+) bar/) {
if ( looks_like_number $1 ) {
print qq("$1" looks like a number\n);
} else {
print qq("$1" doesn't look like a number\n);
}
}
}
Scalar version: 1.19
"123" doesnt look like a number
"123" looks like a number
"123" looks like a number
Scalar version: 1.22
"123" looks like a number
"123" looks like a number
"123" looks like a number
$1
, 我设置
my $test = $1
,然后跑
looks_like_number( $test )
;
Scalar version: 1.19
"123" looks like a number
"123" looks like a number
"123" looks like a number
$1
,
$_
,它们的同类不仅仅是全局变量,而且总是在
main
中。命名空间。这意味着如果您使用
$1
调用子程序,子程序最终可能会修改该值。
my
变量),而不是依赖特殊的 Perl 变量。这意味着不使用
$_
在
while
和
for
循环,而不是操作
@_
直接在子程序中。并且,当您使用正则表达式捕获时,您应该将自己的变量分配给
$1
,
$2
等尽快。
Scalar::Util::PP
时在 Perl 5.12 和 5.18 中,我仍然得到正确的输出。
Scalar::Util
看看发生了什么。但是,我看到:
require List::Util; # List::Util loads the XS
$1
周围添加引号使其行为正确:
if ( looks_like_number "$1" ) {
print "The value is " . $1 . "\n";
if ( looks_like_number $1 ) {
my $test = $1;
if ( looks_like_number $1 ) { works now...
$ perl -d test.pl
Loading DB routines from perl5db.pl version 1.31
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(test.pl:7): print "Version of Scalar::Util: $Scalar::Util::VERSION\n";
DB<1> c
Version of Scalar::Util: 1.19
"123" looks like a number.
"123" looks like a number.
"123" looks like a number.
Debugged program terminated. Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.
-d
的情况下尝试相同的命令范围:
$ perl test.pl
Version of Scalar::Util: 1.19
"123" doesn't look like a number.
"123" looks like a number.
"123" looks like a number.
关于Perl - 这是looks_like_number 的错误,还是我是个愚蠢的人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18198558/
不能制造愚蠢。具有下一个文件夹结构: /flint/double-conversion/src /燧石/愚蠢/愚蠢/ 其中/flint/folly 包含自述文件和许可证。作为in the readme
我有一个小问题,它可能在某个地方很愚蠢,但我仍然有它:) 所以问题是: 通过这样做 round(615.36*0.10, 2, PHP_ROUND_HALF_DOWN); 我希望结果是 61.53,但
我正在寻找一个只是为了大致了解应该如何正确设置标准 C++ 项目。(如果可能的话……:-p) 这是我对这个项目的要求: 基于模块(具有编译成主程序模块的库/模块) 编译跨平台 我想这样做,这样我就可以
我是一名优秀的程序员,十分优秀!