When you use a variable name within a (doubly-quoted) string, you have to look at what the next letter after the variable name is. If it is, say, a space or a punctuation sign, then the compiler can know that the variable name ended and will interpolate the variabe correctly. If the next letter if a letter, a digit or an underscore (_), then the compiler has no way of knowing that the variable name just stopped on the previous letter. Then, you need to use curly braces to tell the compiler where the variable name stops.
my $foo = 4;
print "baz$foo bar"; # works OK, the compiler recognizes $foo, thanks
+to the space
print "$foobar"; # won't work, the compiler will not recognize $fo
+o, but look for a variable named $foobar, which does not exist
print "${foo}bar"; # now fixed, the compiler can recognize $foo than
+ks to the curlies