http://www.perlmonks.org?node_id=1079331


in reply to Re^6: How to avoid an alphabet and integer next to it in a string?
in thread How to avoid an alphabet and integer next to it in a string?

Input was
my $molform = <STDIN>;
C6H9 and Output was:
------Please enter single letter elements in caps only------ Enter the molecular formula of the compound = C6H9 Forbidden chars The molecular weight of the above compound is =

Replies are listed 'Best First'.
Re^8: How to avoid an alphabet and integer next to it in a string?
by runrig (Abbot) on Mar 21, 2014 at 19:25 UTC
    Think about it. How does that help (read again what output I asked for)? When you're trying to determine input and output to something...just print the something...
    my $molform = <STDIN>; print "Molform before: [$molform]\n"; s/\s+$//, s/H(?![a-z])\d*//g for $molform; print "Molform after: [$molform]\n";
    Although hazylife may have nailed the problem...you need to learn how to provide useful debugging information.
      Using your code, input as C6H9
      ------Please enter single letter elements in caps only------ Enter the molecular formula of the compound = C6H9Hg Molform before: [C6H9 ] Molform after: [C6] The molecular weight of the above compound is = 72.0642

      Using your code, input as C6H9Hg

      ------Please enter single letter elements in caps only------ Enter the molecular formula of the compound = C6H9Hg Molform before: [C6H9Hg ] Molform after: [C6Hg] Molform after: [C6Hg] The molecular weight of the above compound is = 272.6542
      Thanks a ton! Yes, it worked!

Re^8: How to avoid an alphabet and integer next to it in a string?
by hazylife (Monk) on Mar 21, 2014 at 18:55 UTC
    chomp(my $molform = <STDIN>);
      Forget chomp, just do:
      $molform =~ s/\s+$//;
        $molform =~ s/H\d*//g; worked for me except for Hg and He. Yup, I tried $molform =~ s/\s+$//;

        The output is zero