Yes I am trying to collect the file (the result will only produce 1 match) And I need that into a variable that can be used for the processing.
-----Original Message----- From: Wagner, David --- Senior Programmer Analyst --- WGO [mailto:[EMAIL PROTECTED] Sent: Tuesday, February 28, 2006 4:19 PM To: Curt Shaffer; Timothy Johnson; beginners@perl.org Subject: RE: regular expression in a variable Curt Shaffer wrote: > That appears to work! The part I am stuck on is how to I take that > value (which would now be $file in your example) and put it into a > variable that I can use through the rest of the script. When I then > try to use $file outside of that routine, it is no longer the same > value. > > I really appreciate your help! > > So are you trying to collect all the files up front and then go through the processing? You already have the test in the loop and could just write a subroutine and pass it $file and do all your work there. If you want to hold on to those fiels which match your criteria, then use another array to capture as in @matchedfiles = grep( /*.test.*/, @files ); Either way, you have the data in place or the other. Wags ;) > > -----Original Message----- > From: Timothy Johnson [mailto:[EMAIL PROTECTED] > Sent: Tuesday, February 28, 2006 3:47 PM > To: Curt Shaffer; beginners@perl.org > Subject: RE: regular expression in a variable > > > So what part are you stuck on then? It looks like the first > suggestion gets you the $filename you want. All you have to do after > that is move > it. > > (you can change it so it isn't looking in the current directory with > the opendir line, but if you do, don't forget that you can't move the > files > by filename alone, you must add the path as a prefix) > > -----Original Message----- > From: Curt Shaffer [mailto:[EMAIL PROTECTED] > Sent: Tuesday, February 28, 2006 12:42 PM > To: Timothy Johnson; beginners@perl.org > Subject: RE: regular expression in a variable > > Thanks for the response. Let me try to clear things up. The second > solution > will not work for me because the other parts of the filename will be > unknown. The only part I know will always be in the filename is "test" > (only > an example). > > So the full story is this: > > I need to look in a directory to see if a file with "test" in the name > exists. If it does I need to move that file to a staging directory to > be sftp'd out to a vendor. The manner in which I am doing that is to > move > the > file named $filename (whose value is the result of the regex match) to > the > staging directory. Then sftp the $filename to the appropriate place. > > Does that help a bit? If not I apologize. > > Curt > > -----Original Message----- > From: Timothy Johnson [mailto:[EMAIL PROTECTED] > Sent: Tuesday, February 28, 2006 3:30 PM > To: Curt Shaffer; beginners@perl.org > Subject: RE: regular expression in a variable > > > You're not being very clear what it is you're trying to do. I can see > two ways of interpreting this. > > Regular expressions are mostly for checking the format of text to see > if certain conditions "match". You might be asking how to do this: > > ######################## > > use strict; > use warnings; > opendir(DIR,".") or die("Couldn't open the current directory!\n"); > my @files = readdir(DIR); > foreach my $file(sort @files){ > if($file =~ /(.*test.*)/i){ > print "MATCH: $file\n"; > } > } > > ######################### > > You can also use the $1 variable to capture the last text string that > matched the part of the regular expression between the parentheses. > > > If, on the other hand, you're trying to generate file names, then > regular expressions aren't what you're looking for. > > my $prefix = "123"; > my $postfix = "456"; > my $filename = $prefix."test".$postfix; > print $filename."\n"; > > > > > -----Original Message----- > From: Curt Shaffer [mailto:[EMAIL PROTECTED] > Sent: Tuesday, February 28, 2006 12:20 PM > To: beginners@perl.org > Subject: regular expression in a variable > > I need to set a variable to a filename where only 1 section of the > file > is > static. > > For example: > > $filename =~ /test/; > > Where the following: > > Print "$filename\n"; > > Would produce: > > 123test456.txt ******************************************************* This message contains information that is confidential and proprietary to FedEx Freight or its affiliates. It is intended only for the recipient named and for the express purpose(s) described therein. Any other use is prohibited. ******************************************************* -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>