古代西南地理问题新论
上QQ阅读APP看书,第一时间看更新

三 历史文献资料考证

如果说上述的论证还带有很多推测成分,尚不足以说明问题,那么,我们不妨再求证于古代历史文献。有意思的是,我们确实能够在历史文献中发现成都平原古代湖泊的身影。

来敏《本蜀论》云:

荆人鄨令死,其尸随水上,荆人求之不得。令至汶山(今龙门山)下,复生,起见望帝。望帝者,杜宇也,从天下,女子朱利自江源出为宇妻,遂王于蜀,号曰望帝。望帝立以为相。时巫山[7]狭而蜀水不流,帝使令凿巫峡通水,蜀得陆处。望帝自以德不文若,遂以国禅,号曰开明。[8]

关于古蜀国时代开明氏鄨令(或作“鳖灵”)“禅代”望帝杜宇氏之事,西汉成都人扬雄《蜀王本纪》[9]、晋常璩《华阳国志》卷3《蜀志》等皆有记载,文字虽详略不同,但“蜀水不流”,鄨令“凿巫峡通水,蜀得陆处”的意思则一。可见,望帝杜宇氏时期,成都平原上的水域面积曾经很大。

望帝杜宇氏时期相当于公元前600年前后的春秋中期。开明氏鄨令事实上是由于治水的功劳而“禅代”望帝杜宇氏的。其实,开明氏鄨令只是使成都平原上的水域面积较前变小了一些。因为,到战国中期的楚威王时(前339—前329年),成都平原上的水域“滇池”面积依然不小。《史记》卷116《西南夷列传》如是说:

始楚威王时,使将军庄蹻将兵循江上,略巴、(蜀)黔中以西。庄蹻者,故楚庄王苗裔也。蹻至滇池,(地)方三百里,旁平地肥饶数千里,以兵威定属楚。[10]欲归报,会秦击夺楚巴、黔中郡,道塞不通,因还,以其众王滇,变服,从其俗,以长之。秦时常頞略通五尺道,诸此国颇置吏焉。十余岁,秦灭[之][11]。及汉兴,皆弃此国而开蜀故徼。巴蜀民或窃出商贾,取其筰马、僰僮、髦牛,以此巴蜀殷富。

《汉书》卷95《西南夷两粤朝鲜传》的记载与之略同。千多年来,这段话引起的争论很多,笔者留待他文讨论。[12]这里,笔者只讨论“滇池”本身的问题。上文中的“滇池”,古往今来的学者们都铁定为今云南省昆明附近。其实,这是大错而特错。正是这一错误,导致西南古史的研究中笼罩起重重迷雾。笔者以为,此之“滇池”非在今成都平原不可。之所以能够这么肯定,是因为上引文中有滇池“方三百里,旁平地肥饶数千里”这样明确的自然情况记载。战国时“三百里”,约当今122.5千米[13]。此滇池若为正方形,换算面积则为900平方千米以上;若为长方形(设宽约20千米,长约40千米),换算面积则为800平方千米左右;若为正圆形,换算面积则近1200平方千米。因此,取其中数,“方三百里”的滇池,其面积应在900平方千米左右。而据图1—1所示湖盆范围,用方格法测算其面积约在1200平方千米以上。考虑到目前发现的战国以前成都平原上古城遗址的分布情况(见图1—6),笔者估计,地质时期的这个湖盆,进入近3000年的历史时期,除东南部一带仍有部分湖泊水体孑遗之外,绝大部分应已淤为平地。由于湖泊水体在成都平原西北部淤高后自然会向相对低平的东南部移徙汇集,只要湖泊出水口不畅,湖泊仍有可能保持较大面积。因此,战国中期“滇池”面积达700平方千米左右事实上也是完全可能的。至于“旁平地肥饶数千里”一句,显然是用来形容战国时期“滇池”周围的平原面积广阔无边。笔者以为,当时产生这样的夸张说法,可能与成都平原特殊的气候条件有关:成都平原的气候特征[14]之一是一年之中阴、雾天很多(超过300天),空气能见度不高,远望常常是渺渺茫茫,无边无际——上古时期楚人初来乍到,完全有可能形成这里平地“数千里”的错觉。而事实上,古人关于成都平原常有“沃野千里,号为陆海”[15]的习惯描述,今成都平原也的确是我国西南地区最大的平原。可见,平地“数千里”这样的说法虽然有些夸张,但还不是太离谱(见图1—2、图1—3)。

图1—2 成都平原卫星影像

图1—3 成都平原常见景观

今天云南昆明滇池一带的情况又何如?今云南滇池也是断层陷落而成。据有关实测资料[16],今滇池南北最长40.8千米,东西最宽12.8千米,北部草海一般深度1米左右,南部外海多为2—3米,湖面面积为287.5—330平方千米。当然,今云南滇池的面积较古云南滇池已缩小了很多。据研究[17],元朝初年,滇池水位约为1892米,水面面积约有510平方千米,只是由于元至元十年(1273年)劝农使张立道开挖海口河、疏通螳螂川后,滇池水位才持续下降,水面面积才迅速变小。但是,即使是1273年之前的滇池面积,也明显与“方三百里”的“滇池”的面积相差甚远。可巧的是,云南滇池的情况却与《史记》《汉书》之后的有关历史文献记载基本相符。《后汉书》卷86《南蛮西南夷列传》有云:

(益州郡)有池,周回二百余里,水源深广,而末更浅狭,有似倒流,故谓之滇池。河土平敞,多出鹦鹉、孔雀,有盐池田渔之饶,金银畜产之富。

类似内容的记载亦见于《华阳国志》卷4《南中志》、三国蜀人谯周所撰《巴蜀异物志》[18]中。汉代“二百余里”(以250里计)约当今100千米(计算依据同前),按云南滇池的长(方)形(设宽12千米,长38千米)估算,当时水体面积在450平方千米左右。这说明2000余年前益州郡“滇池”的水面面积与730年前元初的滇池水面面积差距并不大——之所以出现这种情况,应当与云南滇池受到周围山体局限,以及注入滇池的河流短小、携带进湖中的泥沙较少有关。而今滇池旁发现的新石器时代先民们傍湖生活的遗址离今湖岸只有1—5千米[19]的事实,也为此提供了一个重要旁证。今滇池周围,除了北面昆明市区一带略微开阔之外,几乎完全为起伏的高山、丘陵环绕,也实在与平地“数千里”的地理形势描述南辕北辙(见图1—4、图1—5)。因此,从自然地理面貌方面考虑,上述《史记》《汉书》上的“滇池”绝不可能是今云南滇池。

图1—4 昆明附近卫星影像

图1—5 昆明附近滇池景观

其实,《史记》之中,除了上述《西南夷列传》有关于成都平原“滇池”的记载,在《货殖列传》里同样也有关于秦汉之际成都平原“滇池”的记载,只是“滇池”被写作“田池”而已。其文曰:

(卓氏)致之临邛(今成都平原西南缘邛崃一带),大喜,即铁山鼓铸,运筹策,倾滇蜀之民,富至僮千人,田池射猎之乐,比如人君。

引文中“田池射猎之乐”一句中的“田池”二字,从来没有人解释过,甚至至今没有人把它当作地名。其实,“田池”不但是地名,而且可以肯定是“滇池”的异写。何以见得?理由有三。

理由之一,田、滇二字,上古韵部相同(真部),声纽相近(分别为定母、端母),读音近同,上古时期完全可以通假。

理由之二,引文中“倾滇蜀之民”句的“滇蜀”二字,唐张守节《史记正义》注云:“《汉书》亦作‘滇池’。”查今本《汉书·货殖传》该段文字与《史记》略同,“滇池”二字已被改作“滇蜀”。以此,可肯定今本《汉书·货殖传》中的“滇蜀”二字本为“滇池”,只是到唐以后才为学者据《史记·货殖列传》径改。我们知道,《汉书·货殖传》成文于《史记·货殖列传》之后,班固为什么不依《史记》作“滇蜀”?想来班固应该是有更为坚强的第一手材料依据的。事实上,“倾滇池之民”比“倾滇蜀之民”也更合常理。其一,战国后期秦人大批进入成都平原地区后,必然需要大量的铁质农业生产工具,而在当时的技术条件下,卓氏铁矿的产铁量不可能很大,因而,所产的铁器在本地成都平原地区就会供不应求,完全没有必要舍近求远;其二,当时由今成都平原地区前往云南高原地区的交通条件极端落后,卓氏也完全没有可能把大量笨重的铁器销往今云南滇池一带。对此,句中一个“倾”字实际上就足以说明问题:《说文》云,“倾,仄也”,“仄,侧倾也”,所以,“倾滇池之民”的“倾”字应理解为就近销售之意。显然,只有“滇池”就在成都平原上,“倾滇池之民”才能成立。然而,以“郎中”身份到过西南地区的司马迁[20]为什么要这样写(改)?笔者以为,虽然司马迁所在的军队很可能是经蜀郡南去今云南高原的,但是,蜀郡“滇池”并非此次“西征”的必经之路,且当时戎马倥偬,作为“郎中”的司马迁,其任务是管理军中的车、骑辎重,军务必定相当繁忙,以此,“西征”途中的他很可能并不知道当时的蜀郡也有一个“滇池”存在;而相反,“昆明”滇池一带是此次司马迁部队“西征”的目的地,其在司马迁头脑中留下深刻印象的可能性理应较大。可能正是由于这样的原因,到6年后的太初元年(前104年)司马迁作为史官正式开始编撰史书时,他才会根据自以为正确但事实上并不全面的实地经验知识,把原图书典籍中明确是在蜀郡的“滇池”字样全部更改。班固编撰《汉书》基本上是依据官方图书资料闭门造车。也许也正是由于班固没有西南地区的旅行经历,他对此处“滇池”问题的处理才显得比司马迁慎重一些:他仅仅是把原典籍中关于卓氏“滇池射猎之乐”一句的“滇池”依司马迁改为“田池”——班固只保留这样的通假处理可以有两个妙处:一方面是《汉书·货殖传》中的这段话意思因此变得模糊,另一方面是如此更改史料别人亦无可厚非。事实上,类似的方法也被班固运用于后述《汉书·地理志》《汉书·沟洫志》中有关成都平原“滇池”字眼的处理。

理由之三,晋左思《蜀都赋》关于卓氏“射猎之乐”地点的描述十分明确地写作“滇池”。《文选》卷4《蜀都赋》如是云:

若夫王孙之属、郤公之伦;从禽于外,巷无居人;……拔象齿,戾犀角;鸟铩翮,兽废足;殆而朅,来相与;第如滇池,集于江洲。

由于不知道秦汉之际的成都平原上曾有“滇池”,历来注释者对“第如滇池,集于江洲”八字皆解释不通[21]。按《蜀都赋》的结构是先简略描述汉代蜀郡周围地区的大形势,即“于前……”(描述犍为、牂柯以至交趾等汉代蜀郡以南的广大地区)、“于后……”(描述“华容”“昆仑”一带的今秦岭西部地区)、“于东……”(描述今四川盆地东部的“巴中”“百濮”地区)、“于西……”(描述今川西高原的“岷山”地区)四小部分,然后重点描述汉代蜀郡内部的小景致和人民的安乐生活,即“其封域之内……”者。上引文即出自“其封域之内……”部分,所以,它必是反映汉代蜀郡成都平原地区的景象。依笔者的理解,上引《蜀都赋》段的大意应该是这样的:

像卓王孙、郤公那些人外出射猎时,前呼后拥的人很多。……他们拔掉死去大象的象齿,拽出死去犀牛的犀角,把飞鸟的翅膀折断,把走兽的四足残废。他们中有些人累得不行,于是回家休息去了,而有些人又相拥着一起来到滇池边、江洲上游玩。

笔者以为,只有这样理解,才能言通意顺。那么,左思的记载是否确实可信?笔者以为,左思虽没有到过成都一带,但写《蜀都赋》前曾“诣著作郎张载访岷邛之事”[22],所以,《蜀都赋》中的描绘显然是有可靠资料与事实作为基础的[23]。比如,上引《蜀都赋》中所描述的象、犀,汉晋时期蜀郡一带就确有不少[24]

基于上面的理由,笔者以为,关于卓氏事迹的记载,古本《汉书·货殖传》可能比《史记·货殖列传》更为可信。《史记·货殖列传》和古本《汉书·货殖传》中有关于卓氏的内容,其依据的原始材料大体上是这样的:

(卓氏)致之临邛,大喜,即铁山鼓铸,运筹策,倾滇池之民,富至僮八百[25];滇池射猎之乐,比如人君。

也许有人会说,战国时代尚“方三百里”的“滇池”如果真在成都平原上的话,怎么《汉书·地理志》中不见只字记载?湖泊的消失固是一个必然过程,但“方三百里”的“滇池”也不至于消失得如此之快吧?笔者以为,成都平原“滇池”在《汉书·地理志》中是有记载的,只是这个记载并不是以“滇池”一名出现的。试看《汉书·地理志》“蜀郡”条下的一处文字:

郫,《禹贡》江沱在西,东入大江。

这里的所谓“江沱”,笔者以为就是“江池”,也就是指“滇池”。这么说有两个理由。首先,这里的“江沱”二字肯定不能点断作“江、沱”,否则,这句话的意思就无法理解。今中华书局点校本《汉书》中以“江沱”作一地名是正确的。其次,上古时代,“沱”“池”读音相同(定纽歌韵),本为一字,“池”完全可以异写作“沱”。宋徐铉云:“池沼之池,通用‘江沱’字。”[26]近人著名古文字学家陈梦家亦说:“金文沱、池一字,以池为池沼,为停水,为城池……沱即池。”[27]当代的古文字研究者也同样有这样的认识。例如,裘锡圭即指出,“池”在先秦本来就写作“沱”,“池”原来就是由“沱”讹变的一个字[28]。所以,我们现在只要把上引文的“江沱”理解为“江池”,就言通意顺了。顺便说,上古文献中的“沱”字,诸如《尚书·禹贡》“沱、潜既导”“江、沱、潜、汉”“岷山导江,东别为沱”,《诗·召南》“江有沱”及毛传“沱,江之别也”,《说文》“沱,江别(流)[29]也”之类,都应该理解为“池”,才不至于我们今天以之研究历史地理问题时造成认识上的误区。

为什么班固《汉书·地理志》中要把蜀郡“滇池”写作“江沱”?这有两种可能。一种可能是两汉时期成都平原上的“滇池”已有别名“江沱(池)”。这种可能性很小。因为在现存的上古文献中,成都平原上有“沱(池)”之名,却无“江沱”之名,“江沱”之名仅见于《汉书·地理志》。另一种可能自然是因为汉代益州郡“滇池”和蜀郡“滇池”同属益州刺史部。这种可能性很大。东汉时代上层士人关于前代的地理知识中只有一个“滇池”,而这个“滇池”就是益州郡“滇池”——这样的错误认识当时可能已经普遍形成。例如,东汉许慎《说文》释“滇”字时就说:“滇,益州池也。”班固写作《汉书·地理志》时,很可能是把蜀郡“滇池”当作益州郡治所“滇池”(当今滇池南岸的晋宁晋城)的误记来进行处理的。像前述《汉书·货殖传》一样,班固在这里仍然是采取模糊处理办法:把蜀郡“滇池”改作今天看来字义模糊的、带有通名性质的“江沱”[30],甚至为证明其可靠性,还在郫县(治今郫县)“江沱”一名前冠上《禹贡》作为依据,而事实上《禹贡》中只有“江”或“沱”名,并无“江沱”一名(上例《尚书·禹贡》中的“江沱潜汉”为四水体名,必须断开)。“沱”不作“池”义而被当作某一河流名,大约就是从东汉时期学者们的错误认识开始的。

也许还有人要提出疑问:如果前面的论证完全成立,那么,又如何解释我们今天看到的关于秦蜀守李冰在成都平原地区治水的记载中没有提到“滇池”?笔者以为,正是由于战国后期成都平原“滇池”水域颇广,经常出现水害,不利于秦灭蜀后大批从关中平原迁来的秦人开展农业生产活动,所以,才会有秦昭襄王时(前306年—前251年)蜀郡太守李冰的大规模治水活动出现。李冰在成都平原的治水办法不外分流和疏导,其主要工程有二:一是在“大江”(今岷江)出山口凿“离堆”(又名“湔硼”,今都江堰)分流江水,即所谓“堰其右,捡其左,其正流遂东,郫江之右也”[31];二是在成都县境新开二条人工渠道加大泻水,即所谓“穿二江成都中”[32]。两大工程在减少“滇池”容水量的同时,也可以发挥成都平原上江水的自流灌溉之利。经过李冰这样的治理,“蜀人旱则藉以为溉,雨则不遏其流”,成都平原才真正呈现出“水旱从人,不知饥馑,沃野千里,号为陆海”的景象。[33]成都平原上的“滇池”不但从此不再泛溢为患,而且其水也能为人们利用起来。《史记·河渠书》所谓“至于(所过)[滇池],往往引其水益用”,《汉书·沟洫志》所谓“至于(它)[滇池],往往引其水,用溉田”[34],皆指此。由于李冰治水可以说是以“滇池”为中心,因而,晋左思的《蜀都赋》中才有李冰“指渠口以为云门,洒滮池而为陆泽”的说法。可见,《史记·河渠书》《汉书·沟洫志》中事实上都涉及成都平原上“滇池”的治理,只是“滇池”二字由于司马迁、班固的误解而分别用字词“所过”“它”掩盖起来了。

在前面论述的基础上,笔者通过对《汉书·地理志》《水经·江水注》《华阳国志·蜀志》等历史文献中的其他有关记载,遥感照片影像中显示的古河道走向情况[35]和古湖泊位置情况,目前成都平原古代遗址的发现发掘报告[36],以及刘琳《华阳国志校注》[37]中提供的某些政区沿革资料等进行综合考证、分析,初步复原出以战国及秦汉时期为主体内容的成都平原地理概貌如下(图1—6)。

图1—6 前3世纪前后成都平原概貌

晋以后的现存史籍中,虽然我们再也看不到蜀地“滇池”之名[38],但关于成都附近巨大水体的记载还是能够找到。

《水经注》卷33《江水》云:

初,张仪筑城,取土处去城十里,因以养鱼,今万顷池是也。城北又有龙堤池,城东有千秋池,西有柳池,西北有天井池,津流径通,冬夏不竭。[39]

其中“万顷池”的位置显然应是在成都城的南面,大体属于前述“滇池”(“江沱”)的水域范围;而且,“万顷池”既然尚称“万顷”,看来其水体面积在4世纪时还相当之大。因此,“万顷池”应是古“滇池”在两晋南北朝时期的孑遗。关于“万顷池”的记载,现存文献中唯有《水经注》中的此处内容,估计随着“万顷池”大面积湖泊水体的逐渐消失,“万顷池”的名称也慢慢被人们遗忘。“万顷池”范围内作为湖泊意义的水体大约是在6世纪时消失的。证据之一,《隋书·地理志》及《元和郡县图志》卷31《剑南道上》有云,西魏时(534—557年)分郫县置温江县,后周时(557—581年)又开置新津县(治今新津县);到唐龙朔三年(662年),广都县西部正式改置双流县(治今双流县)。成都西南温江、新津、双流三新县的相继设置,很可能是“万顷池”水域变为大片陆地后区域人口数量增加的结果。证据之二,唐时,温江县(治今温江县城)“西十里”有水名“泜江”[40],其位置显然是在原“滇池”或“万顷池”的水域范围。中古时代,“泜”(《广韵》直尼切)与“池”(《广韵》直离切)读音极近。“泜江”当是“万顷池”消失后在湖区留下的一条重要江道,大约也就是流经今温江县境的岷江干流(一名金马河)。“泜江”在唐宋文献中逐渐被改写作“皁水(江)”[41]。笔者以为,之所以出现这个写法,可能是因为“皁”与“白十”(《字汇补》照基切,读音与“泜”近同)二字构件相同。众所周知,部分汉字构件的位置常可移动,如“崖”“崕”之类。

至于唐以降文献中多见的“万岁池”,其位置在成都之北,前身很可能是上引《水经注》中的“龙堤池”。“万岁池”的记载,历唐、宋以至明代都能找到:

《新唐书》卷42《地理志六》成都县条:

(成都)北十八里有万岁池,天宝中,长史章仇兼琼筑堤,积水溉田。

《宋史》卷386《王刚中传》:

成都万岁池广袤十里,溉三乡田,岁久淤淀,刚中集三乡夫共疏之,累土为防,上植榆柳,表以石柱。

元朝时,“万岁池”被作为成都地区三月三的节日游宴之所[42],一直到明末天启年间成书的《成都府志》中也还有“万岁池”名[43]。因此,估计“万岁池”湖泊水体及其名称的消失时间要晚至有清一代。

成都平原古代湖泊“滇池”消失的主要原因无疑可归结为二:一是自然方面的原因,即穿过成都平原的岷江等河流携带来的泥沙在“滇池”中的大量淤积[44];二是人为方面的原因,即鄨令、李冰、文翁等人对“滇池”出水口的不断开凿疏导和人们在淤积、排干的土地上必然进行的垦殖活动。