【发布时间】:2022-01-04 14:18:21
【问题描述】:
我有数百行类似这样的行,其中只有变量名称发生变化(它们都具有相同的值)
# no change required here
my $worksheet_stats = $workbook->add_worksheet('Stats');
my $worksheet_blockleave = $workbook->add_worksheet('Block Leave ');
my $worksheet_disabled = $workbook->add_worksheet('Disabled Users');
my $worksheet_past = $workbook->add_worksheet('EX Users');
# dirty (what i want to simplify without having to touch at the rest of the code as the script is huge)
$worksheet_blockleave->write( 0, 0, "GPN" );
$worksheet_blockleave->write( 0, 1, "Firstname" );
$worksheet_blockleave->write( 0, 2, "Lastname" );
$worksheet_blockleave->set_column( 0, 1, 30 );
$worksheet_blockleave->set_column( 0, 2, 30 );
$worksheet_disabled->write( 0, 0, "GPN" );
$worksheet_disabled->write( 0, 1, "Firstname" );
$worksheet_disabled->write( 0, 2, "Lastname" );
$worksheet_disabled->set_column( 0, 1, 30 );
$worksheet_disabled->set_column( 0, 2, 30 );
$worksheet_past->write( 0, 0, "GPN" );
$worksheet_past->write( 0, 1, "Firstname" );
$worksheet_past->write( 0, 2, "Lastname" );
$worksheet_past->set_column( 0, 1, 30 );
$worksheet_past->set_column( 0, 2, 30 );
...
# doing other stuff with these variables later (that i don't want to change)
$worksheet_blockleave->write( blabla, 0, blabla );
....
有没有办法创建一个循环,将设置应用于所有这些事情,而不必提及整个变量名? (简化代码并减少它)
类似的东西(没有尝试过,我相信它不会起作用):
foreach ("blockleave", "disabled", "past", "xxx", ...... )
{
$worksheet_${_}->write( 0, 0, "GPN" );
$worksheet_${_}-->write( 0, 1, "Firstname" );
$worksheet_${_}-->write( 0, 2, "Lastname" );
$worksheet_${_}-->set_column( 0, 1, 30 );
$worksheet_${_}-->set_column( 0, 2, 30 );
}
事实上这是有效的:
foreach ($worksheet_blockleave,$worksheet_disabled,$worksheet_past,$worksheet_future,$worksheet_t2,$worksheet_t4,$worksheet_t24,$worksheet_enabled,$worksheet_VR,$worksheet_USBW,$worksheet_USBR,$worksheet_P08,$worksheet_ZH) {
$_->write( 0, 0, "GPN" );
$_->write( 0, 1, "Firstname" );
$_->write( 0, 2, "Lastname" );
$_->set_column( 0, 1, 30 );
$_->set_column( 0, 2, 30 );
}
但我希望有一个更短的解决方案,我不必指定 $worksheet_ 前缀来节省一些空间并稍微澄清脚本..
提前致谢
【问题讨论】:
标签: perl