ホームページ制作を自分でやったことがある人ならわかると思いますが、HTML(XHTML)記述するホームページは基本的に静的なものしか作成出来ません。何かを入力してもらい、次のアクションを起こすなど、動的な動きを組み込むためにはCGIやPHPのようなプログラムを使ってホームページを記述する必要があります。
動的にホームページの内容を変化させるには、変化させたい内容と手順をプログラムに予め記載しておく必要があります。PERLでもPHPでも若干書き方が異なるだけで基本的な考え方は同じです。「ある条件が発生したときに、特定のコンテンツを表示しなさい」という風にプログラムが記載されているわけです。
現在一般的なのはperlとphpです。高速な反応が必要な場合にはc言語を使う場合もあります。またプログラム言語と連動してデータベースが使われるものも多いです。これもXHTML(HTML)では直接利用することが出来ないので、プログラム経由で呼び出す必要があります。
XHTML(HTML)を記述するよりも高い能力が求められるためです。1本のプログラムで何十ものHTMLページの状態を包括する場合もあります。ショッピングカートを考えてみてください。商品ページがあって、商品を入れるバスケットがあって、それを確認するページがあって、間違った操作をしたらエラーを表示させて・・・ときめ細かい対応が必要です。