As mentioned, s/// returns the number of substitutions performed, and map returns the last expression evaluated from each iteration, so your map returns all 1's. One way to accomplish what you want is:
s/\..*$// for my @output = @input;
Another way is to use Filter from Algorithm::Loops