TEX1J desc 'Job Start' MEX1J desc 'Job 2' Pred TEX1J MEX2J desc 'Job end' Pred MEX1J, MEX2J # MEX1J must appear after TEX1J because it depend on TEX1J # MEX2J must appear after TEX1J and MEX1J from a hash defined like this: %hash={ 'MEX1J' => { 'desc' => 'Job 2' 'pred' => [TEX1J], }, 'MEX2J' => { 'desc' => 'Job end' 'pred' => [TEX1J,MEX1J], }, 'TEX1J' => { 'desc' => 'Job start' 'pred' => [], } }