Perl中的数字到字符串转换 [英] Numeric to String conversion in Perl

查看:0
本文介绍了Perl中的数字到字符串转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

据我所知,像

这样的字符串
$a="120.43sunil"+5;    

它将给出类似

的结果
$a=125.43     

因为字符串不是数字,所以将省略"Sunil"部分。 如果我们得到一些类似

的东西
$a="12fred34"*" 3"   

该字符串是否会转换为1234或12034? 我是Perl编程的新手。

推荐答案

如果您打开strictwarnings-您确实应该这样做-它将警告您。

这很好,因为这不是一个好主意。

如果您尝试您的代码,您将看到您的第二个示例给出:

my $val="12fred34"*" 3"   ;
print $val;

给予:

Argument "12fred34" isn't numeric in multiplication (*)
36

perl正在"找到"12个,并使用它,丢弃其余的。

顺便说一句,您的第一个示例还警告:

Argument "120.43sunil" isn't numeric in addition (+)

但真的--这真是个坏主意。

perl可以隐式地将字符串转换为数字,但如果不能,则会发出警告。这是因为在第二种情况下,它是不明确的。文本应该为零吗?被忽视了?这是一个数字,还是两个?

如果您确实需要将字符串的一部分转换为数字,则应该首先解析字符串,并提取所需的值。这可以简单到

$val =~ s/D//g; 

但可能是:

@vals = $str =~ m/(d+)/g; 

如果您真的想用数字和字符串做一些简单的事情,请看dualvar*:

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

use Scalar::Util qw ( dualvar ); 

my $val = dualvar ( 120.43, "sunil" );

print $val,"
";
print $val + 0; #force numeric context;
同时,不要使用$a$b,它们是在perl-sort中有特定用途的变量。无论如何,你都不应该真的使用单字母变量,这是一个不好的编码习惯。

*我实际上并不建议修改dualvars--它们真的很酷,但如果使用不当,可能会生成一些非常糟糕的代码,如果您是可能会发生的情况,如果您是"Perl编程的新手"

这篇关于Perl中的数字到字符串转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆