in reply to printing in a variable scalar and text togheter

print prints its arguments, but returns 1 on success. That is what gets assigned to $d. You probably wanted
my $filename = $a . $x . $c;
or
my $filename = "$a$x$c";
or even
my $filename = join '.', $a, $x, $c;
Tweak to suit your needs.