ファイルで見つかったすべての作成テーブル ddl で、セミコロン (;) の前に挿入する必要がある文字列があります。
CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
出力は次のようになります。
CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
BLKSIZE 2048;
現在、ファイルには複数のテーブル作成 ddl があり、カタログ、スキーマ、ビューなどを作成する他の ddl があります。
私は次のことを試しました:
sub read_file {
my ($filename) = @_;
print "$filename \n";
open my $in, '<', $filename or carp "Could not open '$filename' for reading $!";
local $/ = undef;
my $all = <$in>;
close $in;
return $all;
}
sub write_file {
my ($filename, $content) = @_;
open my $out,'>', $filename or carp "Could not open '$filename' for writing $!";
print $out $content;
close $out;
return;
}
sub changeddl{
my $data = read_file($_);
print "$data \n";
if($data=~m/\s*Create\s*Table.*/im){
$data=~s/(\s*Create\s*Table).*(;$)/$1 blsize 2048 $2/gmi;
write_file(($_, $data))
}
}
changeddl
次に、ファイル(ddlが含まれていますが、機能しません)でcallを呼び出します。助けてください。