RE: regular expression in a variable

2006-02-28 Thread Timothy Johnson

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



--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response




RE: regular expression in a variable

2006-02-28 Thread Timothy Johnson

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




--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response




RE: regular expression in a variable

2006-02-28 Thread Curt Shaffer
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!



-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




-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response




RE: regular expression in a variable

2006-02-28 Thread Wagner, David --- Senior Programmer Analyst --- WGO
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




RE: regular expression in a variable

2006-02-28 Thread Curt Shaffer
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




RE: regular expression in a variable

2006-02-28 Thread Timothy Johnson

If you declare a variable with my(), it only exists within the current
scope  (NOTE:  always add 'use strict' and 'use warnings' whenever you
can at the top of your scripts).

What you'll have to do is declare a variable outside of the brackets.
You could even use a subroutine, like the one below.  When it matches,
I'm returning the name of the file.  If I get through the whole loop
without matching, I'm returning 0 to indicate that it failed.

#

use strict;
use warnings;

my $file;

if($file = GetTestFileName()){
   print I got it!  $file\n;
}else{
   print Failed to locate test file!\n;
}


sub GetTestFileName{
   opendir(DIR,.) or die(Couldn't open the current directory!\n);
   my @files = readdir(DIR);
   foreach my $testfile(sort @files){
  if($testfile =~ /(.*test.*)/i){
 return $testfile;
  }
   }
   return 0;
}

##




-Original Message-
From: Curt Shaffer [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, February 28, 2006 1:11 PM
To: Timothy Johnson; beginners@perl.org
Subject: RE: regular expression in a variable

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!



snip



--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/ http://learn.perl.org/first-response




Re: regular expression in a variable

2006-02-28 Thread Tommy Grav

The $file is only valid inside the foreach scope. To get a global value
use:

use strict;
use warnings;

my $file   # the variable is now global

opendir(DIR,.) or die(Couldn't open the current directory!\n);
my @files = readdir(DIR);
foreach $file(sort @files){   # The my has been removed in this line
   if($file =~ /(.*test.*)/i){
  print MATCH:  $file\n;
   }
}


Cheers
Tommy


[EMAIL PROTECTED]
http://homepage.mac.com/tgrav/

Any intelligent fool can make things bigger,
more complex, and more violent. It takes a
touch of genius -- and a lot of courage --
to move in the opposite direction
 -- Albert Einstein




RE: regular expression in a variable

2006-02-28 Thread Curt Shaffer
Thank you all so much. And thank you timothy for the clarification. I do use
the use strict. I don't tend to use the warnings much, guess maybe I should
at least during development.

Thanks Again!

Curt

-Original Message-
From: Timothy Johnson [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, February 28, 2006 5:50 PM
To: Curt Shaffer; beginners@perl.org
Subject: RE: regular expression in a variable


If you declare a variable with my(), it only exists within the current
scope  (NOTE:  always add 'use strict' and 'use warnings' whenever you
can at the top of your scripts).

What you'll have to do is declare a variable outside of the brackets.
You could even use a subroutine, like the one below.  When it matches,
I'm returning the name of the file.  If I get through the whole loop
without matching, I'm returning 0 to indicate that it failed.

#

use strict;
use warnings;

my $file;

if($file = GetTestFileName()){
   print I got it!  $file\n;
}else{
   print Failed to locate test file!\n;
}


sub GetTestFileName{
   opendir(DIR,.) or die(Couldn't open the current directory!\n);
   my @files = readdir(DIR);
   foreach my $testfile(sort @files){
  if($testfile =~ /(.*test.*)/i){
 return $testfile;
  }
   }
   return 0;
}

##




-Original Message-
From: Curt Shaffer [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, February 28, 2006 1:11 PM
To: Timothy Johnson; beginners@perl.org
Subject: RE: regular expression in a variable

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!



snip



smime.p7s
Description: S/MIME cryptographic signature