My program read other programs source code and colect information about used SQL queries. I have problem with getting substring.
...
$line = <FILE_IN>;
until( ($line =~m/$values_string/i && $line !~m/$rem_string/i) || eof )
{
if($line =~m/ \S{2}DT\S{3}/i)
{
# here I wish to get (only) substring that match to pattern \S{2}DT\S{3}
# (7 letter table name) and display it.
$line =~/\S{2}DT\S{3}/i;
print $line."\n";
...
In result print prints whole line and not a substring I expect. I tried different approach, but I use Perl seldom and probably make basic concept error. ( position of tablename in line is not fixed. Another problem is multiple occurrence i.e.[… SELECT * FROM AADTTAB, BBDTTAB, …] ). How can I obtain that substring?
Best Solution
Use grouping with parenthesis and store the first group.
The code above fixes the immediate problem of pulling out the first table name. However, the question also asked how to pull out all the table names. So:
Result:
If $line = "SELECT * FROM AADTTAB, BBDTTAB;"
Output:
If $line = "SELECT * FROM AADTTAB;"
Output:
Perl Version: v5.10.0 built for MSWin32-x86-multi-thread