Australian captain Michael Clarke re-injured his hamstring during the first one-day international against South Africa in Perth.

Clarke will have scans on Saturday to determine the extent of the injury and will not play any further part in the game.

The 33-year-old has struggled with the injury for some time and had to leave the triangular ODI series in Zimbabwe early after aggravating it while batting.

He was dismissed for just 11 in Friday's game, caught behind by Quinton de Kock off the bowling of Proteas paceman Dale Steyn.

"Early in my innings I took off for a single and just felt it grab," he told Channel Nine.

George Bailey, who made 70 in Australia's total of 8 for 300, stepped in as captain for the rest of the game.

Clarke's injury is the second blow to Australia's already waning veteran stocks, with wicketkeeper Brad Haddin ruled out of the five-game series against South Africa.

Haddin was replaced by former Test gloveman Matthew Wade for the first clash and Cricket Australia on Friday confirmed Haddin could not recover from his shoulder injury in time to play any of the ensuing ODIs.

The 37-year-old hurt his right shoulder diving for a ball on the first day of the second Test against Pakistan in the United Arab Emirates.

"He has improved and responded to treatment since returning from the UAE but has not recovered sufficiently to return to training and therefore he has been declared unfit for the remainder of ODI series against South Africa," team physiotherapist Alex Kontouris said in a statement.

The news casts doubt on whether Haddin will be able to line up for the upcoming Test series against India, but Kontouris said the medical team is hopeful he can recover in time for the first match starting at the Gabba on December 4.