我在perl中創建了一個名爲@jobs的數組。它是一個數組來存放我的工作列表的哈希值。在perl中移動一個未命名的散列?
我填充它,然後排序與下面的代碼另一個數組:
open(my $JOBLIST, '<:crlf', 'Jobs.conf')
or die "Unable to open file, $!";
#Store Hashes into jobs array
while (<$JOBLIST>) {
push(@jobs, {split(/:\s*|\n/)});
}
#sort jobs array by JobArrival
my @sortJobs = sort { $a->{JobArrival} <=> $b->{JobArrival} } @jobs;
如何訪問哈希在@sortJobs並將其移動到其他陣列等?我理解如何推動,但我不認爲這些哈希是命名的,所以我不確定我如何訪問它們?
編輯清晰:
我jobs.conf文件看起來像:
JobName: A
JobSize: 100
JobArrival: 4
JobExe: 100
JobName: C
JobSize: 100
JobArrival: 2
JobExe: 100
JobName: B
JobSize: 100
JobArrival: 3
JobExe:100
JobName: D
JobSize: 100
JobArrival: 1
JobExe: 100
當我已經整理它,我的哈希值的數組看起來像這樣:
[
{ JobArrival => 1, JobExe => 100, JobName => "D", JobSize => 100 },
{ JobArrival => 2, JobExe => 100, JobName => "C", JobSize => 100 },
{ JobArrival => 3, JobExe => 100, JobName => "B", JobSize => 100 },
{ JobArrival => 4, JobExe => 100, JobName => "A", JobSize => 100 },
]
什麼我需要做的是從數組「D」中取出第一份工作,並將其移動到另一個數組中。一旦我完成了,我需要訪問下一個,並移動,直到我已經從這個數組中移動所有的哈希。
通常我會使用哈希名稱,但據我所見,這些哈希是未命名的,這使我感到困惑。
訪問哈希引用本身很簡單('$ sortJobs [$ some_index]')。你在問如何訪問哈希中的字段? 「Jobs.conf」的外觀是什麼? – Kenney
@Kenney我更新了主要帖子,希望它能讓我的意圖更清晰。 – SilentUK
有一點,謝謝 - 只是遺漏了一些關於你想放置哈希的細節 - 基於什麼條件等等。我認爲你可以將第一個哈希從已排序的列表中移出並放到其他地方 - 但這可能太多了不重要的? – Kenney