我目前无法格式化输出。我知道这可能是“不好的做法”,但使用格式是必需的。
我试图将从数据库中检索到的值打印到Netcool的SQL插入模板中。
我正在引用http://perldoc.perl.org/perlform.html来应用适当的变量,但我不确定为什么这不起作用。
以下是代码段:
129 foreach my $row (@{$rows}) {
130
131 $trigger_name = removeNull($row->{triggername});
132 $trigger_group = $row->{groupname};
133 $trigger_kind = $row->{triggerkind};
134 $code_block = $row->{codeblock};
135 $isDebugEnabled = IntToLiteralBoolean($row->{debugenabled});
136 $isEnabled = IntToLiteralBoolean($row->{isenabled});
137 $priority = $row->{triggerpriority};
138 $comment_block = $row->{commentblock};
139 $evaluate_block = $row->{evaluateblock};
140 $bind_name = $row->{bindname};
141 $condition_block = $row->{conditionblock};
142 $declare_block = $row->{declareblock};
143
144 # my $sth_triggerType;
145
146 if($trigger_kind == 0) {
147 #database logic goes here
148 my $sql_getDatabaseFields = "select *
149 from catalog.database_triggers
150 where TriggerName = '$trigger_name'";
151
152 print "\n\nExtracting trigger: $trigger_name";
153 print "\nTriggerKind: Database, $trigger_kind";
154
155 my $sth_triggerType = $dbh->prepare($sql_getDatabaseFields);
156 $sth_triggerType->execute;
157 my $dbRows = $sth_triggerType->fetchall_arrayref({});
158
159 foreach my $row (@{$dbRows}) {
160 $event_order = $row->{eventorder};
161 $event_op = $row->{eventop};
162 $database_name = $row->{databasename};
163 $table_name = $row->{tablename};
164 $event_level = $row->{eventlevel};
165 write;
166
167 # print "\nEvent Order: $event_order";
168 # print "\nEvent Op: $event_op";
169 # print "\nDatabase Name:$database_name";
170 # print "\nTable name:$table_name";
171 # print "\nEvent Level: $event_level";
172 }
173 format =
174
175 CREATE OR REPLACE TRIGGER @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
176 $trigger_name
177 GROUP @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
178 $trigger_group
179 DEBUG @<<<<<<<<<<<<
180 $isDebugEnabled
181 ENABLED @<<<<<<<<<<<<
182 $isEnabled
183 PRIORITY @<<
184 $priority
185 COMMENT ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
186 $comment_block
187 ~~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
188 $comment_block
189 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
190 $comment_block
191 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
192 $comment_block
193 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
194 $comment_block
195 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
196
197 begin
198 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
199 $code_block
200 ~~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
201 $code_block
202 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
203 $code_block
204 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
205 $code_block
206 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
207 $code_block
208 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
209 $code_block
210 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
211 $code_block
212 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
213 $code_block
214 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
215 $code_block
216 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
217 $code_block
218 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
219 $code_block
220 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
221 $code_block
222 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
223 $code_block
224 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
225 $code_block
226 end;
227 .
这是调试时的输出:
Extracting trigger: service_reinsert
Not enough format arguments at nc_trigger_extract.pl line 199.
at nc_trigger_extract.pl line 199
main::STDOUT called at nc_trigger_extract.pl line 165
Modification of a read-only value attempted at nc_trigger_extract.pl line 199.
at nc_trigger_extract.pl line 199
main::STDOUT called at nc_trigger_extract.pl line 165
Debugged program terminated. Use q to quit or R to restart,
139: $evaluate_block = $row->{evaluateblock};
140: $bind_name = $row->{bindname};
141: $condition_block = $row->{conditionblock};
142==>b $declare_block = $row->{declareblock};
143
144 # my $sth_triggerType;
145
146: if($trigger_kind == 0) {
147 #database logic goes here
148: my $sql_getDatabaseFields = "select *
DB<2> x $code_block
0 "\cJ\cIset old.LastReportAt = new.LastReportAt;\cJ\cJ\cIif ( old.CurrentState != new.CurrentState )\cJ\cIthen\cJ\cI\cIset old.CurrentState = new.CurrentState;\cJ\cI\cIset old.StateChange = new.StateChange;\cJ\cIend if;\cJ\cJ\cIif ( new.CurrentState = 0 )\cJ\cIthen\cJ\cI\cIset old.LastGoodAt = new.LastGoodAt;\cJ\cIelseif ( new.CurrentState = 1 )\cJ\cIthen\cJ\cI\cIset old.LastMarginalAt = new.LastMarginalAt;\cJ\cIelseif ( new.CurrentState = 2 )\cJ\cIthen\cJ\cI\cIset old.LastBadAt = new.LastBadAt;\cJ\cIend if;\cJ\c@"
DB<4> x $comment_block
0 "Service processing for service.status\c@"
DB<5> c
答案 0 :(得分:0)
比较以下两个例子:
1)
my $code_block = "helloworld";
my $str = "mars";
format =
^<<<<
$str
begin
^<<<<
$code_block
^<<<<
$code_block
^<<<<
$code_block
end;
.
write STDOUT;
--output:--
mars
begin
hello
world
end;
2)
my $code_block = "helloworld";
my $str = "mars";
format =
^<<<<
begin #LINE 11
^<<<<
$code_block
^<<<<
$code_block
^<<<<
$code_block
end;
.
write STDOUT;
--output:--
Modification of a read-only value attempted at 1.pl line 11.