I'm not at all sure I've read you question correctly, but is this the output you are looking for from your sample input? (The quotes are just a sanity check and easily removed)
C:\test>254403 'V_PAID_USERS' 'V_OVERDUE' 'UNPAID_USERS' 'receipts'
#! perl -slw use strict; $/ = ""; # Set paragraph mode (see Perlvar:$/) while( <DATA>) { m[(\w+)\s+as]i and print "'$1'"; } __DATA__ create view V_PAID_USERS as select * from users u, subcription s where u.user_id=s.user_id and s.balance =< 0; CREATE OR REPLACE VIEW V_OVERDUE AS select * from users u, subscription s where u.user_id=s.user_id and s.duedate > 60; create TABLE UNPAID_USERS as select * from users u, subcription s where u.user_id=s.user_id and s +.balance > 0; create view receipts as select * from unpaid_users;
Setting $/ to '' enables paragraph mode, and which allows you to read each complete statement as a single string. Using the keyword "AS" as an anchor, seems to select the table or view name in each statement. You can easily change \w+ to be more selective about which ones get captured.
As always, if I got it completely wrong, simply ignore me:)
In reply to Re: Pattern matching "dirty" data sources
by BrowserUk
in thread Pattern matching "dirty" data sources
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |