in reply to result is not listening to if

Hello prospect,

Welcome to the Monastery. I am wondering what you are trying to do with your script. Can you provide us a short description?

I am curious because you ask at user to enter a string. A string could be an int but also could be an alphabetical character string. Having said that, I would also like to point out that character x is not the same as * read here perlop/Operator Precedence and Associativity about the * character and here for the x perlop/Multiplicative Operators.

So having said that as the fellow monk choroba pointed out if you want to compare numbers do not use double quotes e.g. "100", this is not the same as 100. Double quote characters in Perl convert the int to string.

So again back to the original question. What are you trying to achieve?

Are you trying to replicate the string n times, or you just want to multiply integers and then check if the output is bigger than 100?

Help us to help you.

Looking forward to your reply, BR.

Seeking for Perl wisdom...on the process of learning...not there...yet!

Replies are listed 'Best First'.
Re^2: result is not listening to if
by prospect (Acolyte) on Jul 14, 2017 at 13:43 UTC

    Hello! I just tought I would try to add a limit on the string output to an exercise in the Perl book I'm reading, The excercise was "8 Write a program that prompts for and reads a string and a number (on separate lines of input) and prints out the string the number of times indicated by the num- ber on separate lines. (Hint: use the x operator.) If the user enters “fred” and “3”, the output should be three lines, each saying “fred”. If the user enters “fred” and “299792,” there may be a lot of output." I though that if you put double quoutes around a variable value in Perl, Perl would know for example that "20" is a number. And that if you put variable value between single quotes like this "my $number = '20'. Perl would take it as a literal string. I'll check out those links thank you. Regards

      I though that if you put double quoutes around a variable value in Perl, Perl would know for example that "20" is a number. And that if you put variable value between single quotes like this "my $number = '20'. Perl would take it as a literal string.

      I think you may have misread or misinterpreted something. "20" is exactly the same as '20' in perl. But if $z has value 20 then "$z" and '$z' are quite different.

      #!/usr/bin/env perl use strict; use warnings; my $dql = "20"; my $sql = '20'; my $z = 20; my $dqv = "$z"; my $sqv = '$z'; print "dql: $dql\n"; print "sql: $sql\n"; print "dqv: $dqv\n"; print "sqv: $sqv\n";

      The assignment to $dqv is what is known as interpolation. Double quotes do it but single quotes do not. See the "interpolates" column in the table in Quote and Quote-like Operators for the full list.

      Note that by putting any sort of quotes around a numerical value you are essentially converting it into a string. $z above is a pure number the other variables are all strings. But Perl isn't strongly typed so you can get away with plenty of mixing and matching.

      Addendum: The choice of variable names in this example might not be obvious. They are abbreviations for "double quoted literal", "single quoted literal", "double quoted variable" and "single quoted variable". (Thanks 1nickt for pointing out the lack of clarity).

        Ok Thank you, so if I understand correctly, if I want to make sure Perl interprets my value as a number I need to not put quotes around it?

      Hello again prospect,

      Regarding your question you can find a very similar question on the forum that contains many interesting answers: A function to determine if a string is numeric, similarly How to determine if something is numeric?.

      A most common way to convert a numerical string to int is casting int. For example from documentation:

      For example, int(-6.725/0.025) produces -268 rather than the correct - +269; that's because it's really more like -268.99999999999994315658 i +nstead.

      Hope this helps, BR.

      Seeking for Perl wisdom...on the process of learning...not there...yet!