in reply to Re^2: Setting a Variable from filename
in thread Setting a Variable from filename
As always, There Is More Than One Way To Do It. If you're certain that the grep condition will always match exactly one element of @files:
However, none of the above solutions provide protection against the case that @files does not contain exactly one string matching the pattern, which is why I suggested the extra array. <update> AnomalousMonk showed a way to add the check to the second of my examples above. To add a check to the other two, </update> you could theoretically search the array a second time, using grep in scalar context (if ( grep({/_CF_/} @files)!=1 ) { die ... }), but that's fairly wasteful and you'll have duplicated code (the grep block). Of course, you can also write an explicit loop:
my $ScontrolFile; for my $file (@files) { if ( $file =~ /_CF_/ ) { die "more than one _CF_ file found in: @files" if defined $ScontrolFile; $ScontrolFile = $file; } } die "_CF_ file not found in: @files" unless defined $ScontrolFile;
Update: Added check for >1 file in the above code, and see update in text.
|
|---|