Perl 如何删除SAS中双引号导致的额外空间

Perl 如何删除SAS中双引号导致的额外空间,perl,sas,batch-processing,Perl,Sas,Batch Processing,我是SAS新手,正在尝试通过SAS程序创建批处理文件。代码如下: data new; enddate=date(); getdate=date()+1; flname1=compress("d:\temp\file"||year(enddate)||put(month(enddate),z2.)|| put(day(enddate),z2.)||".txt"); begdate=enddate-&days; dtline1=compbl(compress("00:00_"||put

我是SAS新手,正在尝试通过SAS程序创建批处理文件。代码如下:

data new;
enddate=date();
getdate=date()+1;
flname1=compress("d:\temp\file"||year(enddate)||put(month(enddate),z2.)||
   put(day(enddate),z2.)||".txt");
begdate=enddate-&days;
dtline1=compbl(compress("00:00_"||put(begdate,mmddyy10.))||" "||
compress("00:00_"||put(getdate,mmddyy10.)));
file 'h:\programs\daily_file';
put 'LOGIN abc xyz';
put 'FILE(C:\temp\list.txt) 
dtline1 "script.pl("flname1")";
put 'LOGOUT';
Script.pl是一个perl脚本,在生成的批处理文件中,
flname1
后面有一个额外的空间。它打印出如下内容:

script.pl(d:\temp\file\u date)


我不想在约会后留下这个额外的空间。我能做什么?

要使其正常工作,最简单的方法是将整个命令(
script.pl(filename)
)放入单个变量,然后放入该变量

您还可以在put中使用+(-1)将线指针向后移动一个,如果它始终关闭一个(尽管大多数情况下不需要)


在写入文件之前,您似乎太过努力地创建字符串变量。您应该能够使用PUT语句的功能编写所需内容。这个问题不清楚您希望文件具有什么格式,但我认为此代码模仿了您的程序

%let days=7 ;
data new;
  enddate=date();
  getdate=date()+1;
  begdate=enddate-&days;
  file 'h:\programs\daily_file';
  put 'LOGIN abc xyz'
    / 'FILE(C:\temp\list.txt) 00:00_' begdate mmddyy10. 
      ' 00:00_' getdate mmddyy10. 
      ' script.pl(d:\temp\file' enddate yymmddn8. '.txt)'
    / 'LOGOUT'
  ;
run;
它产生:

LOGIN abc xyz
FILE(C:\temp\list.txt) 00:00_08/14/2015 00:00_08/22/2015 script.pl(d:\temp\file20150821.txt)
LOGOUT

@那是一个相当糟糕的编辑。建议编辑时请多加注意-特别是,您正在从正确的标记编辑恢复到错误的标记。Joe-非常感谢。我真的很感谢你的帮助+(-1)工作正常,批处理文件运行正常。再次感谢!!
LOGIN abc xyz
FILE(C:\temp\list.txt) 00:00_08/14/2015 00:00_08/22/2015 script.pl(d:\temp\file20150821.txt)
LOGOUT