The "best method" depends on how you want to do it. Assuming you want to do it via T-SQL, then maybe something like below (I've omitted any error/missing object checking):
DECLARE @current_proc_name nvarchar(100);
DECLARE @new_proc_name nvarchar(100);
DECLARE @proc_source nvarchar(max);
SET @current_proc_name = 'proc1';
SET @new_proc_name = 'proc1_new';
SELECT @proc_source = OBJECT_DEFINITION(OBJECT_ID(@current_proc_name));
SET @proc_source = STUFF(@proc_source, CHARINDEX(@current_proc_name, @proc_source), LEN(@current_proc_name), @new_proc_name);
IF CHARINDEX('ALTER', @proc_source) > 0 AND
CHARINDEX('ALTER', @proc_source) < CHARINDEX('SOURCE', @proc_source)
BEGIN
SET @proc_source = STUFF(@proc_source, CHARINDEX('ALTER', @proc_source), 5, 'CREATE')
END /*IF*/
SELECT @proc_source;
EXEC(@proc_source);
SQL DBA,SQL Server MVP(07, 08, 09) "It's a dog-eat-dog world, and I'm wearing Milk-Bone underwear." "Norm", on "Cheers". Also from "Cheers", from "Carla": "You need to know 3 things about Tortelli men: Tortelli men draw women like flies; Tortelli men treat women like flies; Tortelli men's brains are in their flies".