The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use Modern::Perl;
use Math::Trig;
use HackaMol;

my $radius = shift || 16;
my $oxy = HackaMol::Atom->new( Z => 8 );
my $hyd = HackaMol::Atom->new( Z => 1 );

my $mass = $oxy->mass + 2 * $hyd->mass;
my $rho  = 1.0;

say "H2O g/mol: $mass";
say "H2O mol/L:",             $rho * 1000 / $mass;     # g/cm3 * cm3/L  * mol/g
say "H2O molar (moles/mL): ", $rho * 1 * 1 / $mass;    # g/cm3 * cm3/ml * mol/g
my $cm_ang = 100 / 10E9;
say "cm/ang :", $cm_ang;

my $Na = 6.02214179E+23;

say "rho (molecules/ang^3): ",
  ( $rho / $mass ) *
  ( $cm_ang**3 ) *
  $Na;    # g/cm3 * mol/g * cm3/ang3 * molecules/mol

my $natoms = int( 0.0334 * ( $radius**3 ) * 4 * pi / 3 );

say "$natoms in radius $radius Angstroms";