Search code examples
stringidl-programming-language

In IDL, how can I access a variable given its name?


I would like to convert a string to a variablename, so it can be read as a already restored variable.

So, I look through a file, and look at all the files. I use RESTORE to use the file in IDL, restore names this object as something slightly different. It names it as an object which we'll call map_1 (in the code it's called filerestore_name). This is related to the file name and I can recreate this variable name - however, its saved as a string.

Now, I pass this onto the make_cool_video procedure. However, althoughthis string now is exactly the same as the varialbe name, its still a string!. Thus, as its a string, the procedure can't work.

filenames=FILE_SEARCH('rxrt*')
filenames_withoutextension = STREGEX(filenames,'rxrt_[0-9]+[a-zA-Z_]+',/EXTRACT,/FOLD_CASE)

restore, '/home/tomi/Documents/actualwork/'+filenames_withoutextension(18)+'.idl_sav',

filerestore_name = STRJOIN(STRSPLIT(filenameswithout(18),'_[0-9]+',/EXTRACT,/REGEX),'')
PRINT, filerestorename

make_cool_video, EXECUTE(filerestore_name),filename=filerestorenames, outdir='/path/to.file/'

retall

What I tried: using the RESTORE function and the associated RESTORED_OBJECTS to store pointers in an array, and then referring to the array. But I couldn't get the restore function to form an array.

Using EXECUTE(filerestore_name) however, this doesn't convert it as I was expecting.


Solution

  • I would recommend using SCOPE_VARFETCH() instead (it isn't as limited as EXECUTE() and is probably more efficient). You can do something like:

    make_cool_video, (SCOPE_VARFETCH(filerestore_name)), filename=filerestorenames, outdir='/path/to.file/'