in reply to Use scalars to define a filename

There are a couple of issues here. First, when you get the "string found or bareword..." error message, it will include a line number. That line number is likely not the line you're pointing to because there are no barewords or syntax errors in the code above. You'll want to post a larger code snippet.

That being said, in Perl an identifier should start with a letter or underscore and is followed by zero or more word characters. A scalar variable in Perl is defined as a dollar sign ($) followed by an identifier. When you have a this line:

my $filename = "fileLocn/$var1_$var2.txt";

When you fix your other issue, you'll probably get an error message similar to: Global symbol "$var1_" requires explicit package name at temp.pl line 10.

(Note: If you're on a version of Perl less than 5.10, you won't see the variable name)

Perl thinks that $var1_ is a variable name. You need to tell Perl that the trailing underscore (_) is not part of the variable name. You can fix this one of two ways:

# escape the underscore my $fileName = "fileLocn/$var1\_$var2.txt"; # or wrap the identifier in curly braces my $fileName = "fileLocn/${var1}_$var2.txt";

Also, I suspect that you wanted fileLocn to begin with a dollar sign?