Hello,
I'm new to Perl and am not sure whether I can do what I intend so would greatly appreciate some advice please.
Within Materials Studio (2016) GUI I want to use perl to open some cif files within a directory held outside of a Materials Studio project, and then extract a particular line from each cif file, using this line in a subsequent calculation, also contained within the perl script.
I don't understand why the following fails at open (my \$fh, '<', \$file2) or die \$!; (The following is part of a larger code)
####################################################:
my \$i = 0;
my \$input_suffix = 'cif';
opendir my \$folder, \$inputFilesFolder or die "Couldn't open folder";
my @allfiles = grep /^.+\.\$input_suffix\$/, readdir \$folder;
print "@allfiles";
print "This is the main folder: \$folder";
foreach my \$file (@allfiles) {
print "Parsing \$file \n";
print "This is the list of cif files:@allfiles\n";
print "This is the number of elements in '@allfiles': " . @allfiles . "\n";
my \$prefix = "\$folder";
#print "\$files[2]\n";
my @filepaths = "\$outputFilesFolder/\$file";
# my @filepaths = map { \$prefix . \$_ } @allfiles;
print "This is now the new list of filepaths: @filepaths";
print "Size: ",scalar @filepaths, "\n";
print "This is each cif file with its full path:@filepaths \n";
print "# This is the number of Elements: " . @filepaths . "\n";
#closedir \$folder;
print "This is the directory we're now in: \$folder \n";
foreach my \$file2(@filepaths) {
print "This is each file and its path again: \$file \n";
print "# Elements: " . @filepaths . "\n";
open (my \$fh, '<', \$file2) or die \$!;
my @lines = <\$fh>;
for (@lines) {
if (\$_ =~ /(z_value)\s\:\s(\d+\.\d+)/) {
print "\$2\n";
}
}
}
}
######################################
Am I trying to do the impossible within the GUI?
Advice welcome!
Many thanks and best wishes,
Dawn Geatches
I'm new to Perl and am not sure whether I can do what I intend so would greatly appreciate some advice please.
Within Materials Studio (2016) GUI I want to use perl to open some cif files within a directory held outside of a Materials Studio project, and then extract a particular line from each cif file, using this line in a subsequent calculation, also contained within the perl script.
I don't understand why the following fails at open (my \$fh, '<', \$file2) or die \$!; (The following is part of a larger code)
####################################################:
my \$i = 0;
my \$input_suffix = 'cif';
opendir my \$folder, \$inputFilesFolder or die "Couldn't open folder";
my @allfiles = grep /^.+\.\$input_suffix\$/, readdir \$folder;
print "@allfiles";
print "This is the main folder: \$folder";
foreach my \$file (@allfiles) {
print "Parsing \$file \n";
print "This is the list of cif files:@allfiles\n";
print "This is the number of elements in '@allfiles': " . @allfiles . "\n";
my \$prefix = "\$folder";
#print "\$files[2]\n";
my @filepaths = "\$outputFilesFolder/\$file";
# my @filepaths = map { \$prefix . \$_ } @allfiles;
print "This is now the new list of filepaths: @filepaths";
print "Size: ",scalar @filepaths, "\n";
print "This is each cif file with its full path:@filepaths \n";
print "# This is the number of Elements: " . @filepaths . "\n";
#closedir \$folder;
print "This is the directory we're now in: \$folder \n";
foreach my \$file2(@filepaths) {
print "This is each file and its path again: \$file \n";
print "# Elements: " . @filepaths . "\n";
open (my \$fh, '<', \$file2) or die \$!;
my @lines = <\$fh>;
for (@lines) {
if (\$_ =~ /(z_value)\s\:\s(\d+\.\d+)/) {
print "\$2\n";
}
}
}
}
######################################
Am I trying to do the impossible within the GUI?
Advice welcome!
Many thanks and best wishes,
Dawn Geatches