Different ways to convert String to number in Perl with code examples
This tutorial explains multiple ways to convert a String to a Number in Perl with Code examples.
- Use String variable by append with a number o using the
- use the
Inttype constructor. For example,
sprintffunction, Assign the result
sprintf("%d", "98");and variable holds number
How to Convert String to Number in Perl?
- using string append with
+Symbol The string contains a group of characters and letters, enclosed in double or single quotes in Perl. A number contains a numeric value.
For example, if the string contains numbers, Append with zero to return the number.
my $str = "123"; print $str + 0,"\n";
If the string contains mixed letters and numbers, letters are after numbers, It returns a number.
Perl always processes the statements from left to right and
Since It is a context-based programming language, it understands addition context as implicit and string is converted to zero,
999+0, appending explicit again with the
+ operator with 0 being the same number.
my $str = "999asd"; print $str + 0,"\n";
if the string contains letters before numbers, It treats it as a string, Converting string to a number is zero.
my $str = "asd999"; print $str + 0,"\n";
Please note with this approach, if the number starts with INF and nan, it always returns the same string as given below
my $str = "inf199"; print $str + 0,"\n"; my $str = "nan199"; print $str + 0,"\n";
if the string contains letters in between numbers, it always returns the first number.
my $str = "1a99"; print $str + 0,"\n";
- using int type constructor The second way, Using the int constructor, passes the string parameter to Int, and It casts to a number.
Here is a cast string to number using an int example
my $str = "456"; $number = int($str); print $number,"\n"; # 456 my $str1 = "456abc"; $number1 = int($str1); print $number1,"\n";# 456 my $str2 = "abc"; $number2 = int($str2); print $number2;# 0
456 456 0
- use sprintf function
sprintf is a built-in function in Perl.
It contains the first argument as a formatter and the second is a variable value. It converts a second value into a given format(first argument).
Here is a
sprintf function in Perl to convert a string to a number.
my $str1 = "456"; $number1 = sprintf("%d", $str1); print $number1,"\n"; # 456 my $str2 = "456abc"; $number2 = sprintf("%d", $str2); print $number2,"\n"; # 456 my $str3 = "abc"; $number3 = sprintf("%d", $str3); print $number3,"\n"; # 0
Since Perl does not do the automatic conversion from String to Number, So you have to manually do the conversion using different methods.